Service中有四个重要函数:  

    public IBinder onBind(Intent arg0);    //必须实现,返回接口给Service    public void onCreate();                //Service创建时调用    public void onStart(Intent intent,int startId);//通过startService()会调用    public void onDestroy();                //销毁时StopService()调用

 

通过StartActivity()函数启动Service,当第一次调用时会分别调用onCreate()和onStart在();

之后只会调用onStart();

通过函数StopService()结束Service,会调用onDestroy();

调用BindService():当Service未创建时调用onCreate()和onBind();当创建了只调用onBind();

使用函数bindService()和函数unbindService()可以绑定和解除绑定

对已经绑定的Service调用bindService()无效,即多次调用bindService()和调用一次bindService()一样。 unbindService()只能使用一次,即对于一个绑定的Service,只能调用一次unbindService(),多次调用会产生错误


该函数原型为:

bindService(Intent,ServiceConnection,BIND_AUTO_CREATE);

ServiceConnection是一个服务连接类,必须实现以下两个函数:

public void onServiceConnected(ComponentName arg0, IBinder arg1)//连接成功时调用public void onServiceDisconnected(ComponentName arg0)        //连接失败时调用

    示例如下:

private ServiceConnection conn=new ServiceConnection() {    @Override    public void onServiceConnected(ComponentName arg0, IBinder arg1) {        // TODO Auto-generated method stub        Toast.makeText(MainActivity.this, "success", Toast.LENGTH_LONG).show();        Log.i("SERVICE","success");    }    @Override    public void onServiceDisconnected(ComponentName arg0) {        // TODO Auto-generated method stub        Toast.makeText(MainActivity.this, "errer", Toast.LENGTH_LONG);        Log.i("SERVICE","errer");    }

    

    

Service实例:

    MainActivity.java:

private ServiceConnection conn=new ServiceConnection() {    @Override    public void onServiceConnected(ComponentName arg0, IBinder arg1) {        // TODO Auto-generated method stub        Toast.makeText(MainActivity.this, "success", Toast.LENGTH_LONG).show();        Log.i("SERVICE","success");    }    @Override    public void onServiceDisconnected(ComponentName arg0) {        // TODO Auto-generated method stub        Toast.makeText(MainActivity.this, "errer", Toast.LENGTH_LONG);        Log.i("SERVICE","errer");    }};
protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    Button button1=(Button)this.findViewById(R.id.btn1);    Button button2=(Button)this.findViewById(R.id.btn3);    Button button3=(Button)this.findViewById(R.id.btn4);    Button button4=(Button)this.findViewById(R.id.btn5);    button1.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View arg0) {            // TODO Auto-generated method stub            startService(new Intent(MainActivity.this,NewService.class));        }    });    button2.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View arg0) {            // TODO Auto-generated method stub            stopService(new Intent(MainActivity.this,NewService.class));        }    });    button3.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View arg0) {            // TODO Auto-generated method stub            bindService(new Intent(MainActivity.this,NewService.class),conn,BIND_AUTO_CREATE);        }    });    button4.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View arg0) {            // TODO Auto-generated method stub            unbindService(conn);        }    });}

NewService.java:

public class NewService extends Service {    @Override    public IBinder onBind(Intent arg0) {        // TODO Auto-generated method stub        Toast.makeText(NewService.this, "onBind", Toast.LENGTH_LONG).show();        Log.i("SERVICE","onbind");        return null;    }    public void onCreate() {        super.onCreate();        Log.i("SERVICE","oncreat");        Toast.makeText(NewService.this, "onCreat", Toast.LENGTH_LONG).show();    }    public void onStart(Intent intent,int startId) {        Log.i("SERVICE","onstart");        Toast.makeText(NewService.this, "onStart", Toast.LENGTH_LONG).show();    }    public void onDestroy() {        Log.i("SERVICE","ondestory");        Toast.makeText(NewService.this, "onDestory", Toast.LENGTH_LONG).show();    }}

Activity.xml

<?xml version="1.0" encoding="utf-8"?>

                    

AndroidManifest.xml增加:

 




更多相关文章

  1. Android 数据绑定视图 dataBinding
  2. Android Audio代码分析13 - AudioTrack::getPosition函数
  3. Java乔晓松-android的四大组件之一Service(服务的绑定)
  4. Android 中调试手段 打印函数调用栈信息
  5. Android 利用JNI调用Android Java代码函数
  6. Android中SensorManager.getRotationMatrix函数原理解释
  7. Android 架构组件之 ViewBinding(视图绑定)
  8. Android数据绑定Data Binding初体验

随机推荐

  1. Android——简单对话框
  2. Android汉字转换成拼音
  3. webview高度自适应图文详情
  4. Android(安卓)仿360恶意广告拦截扫描
  5. Android(安卓)Name Rules 命名规则
  6. android 中Window跟WindowManager
  7. Android: You are not using bash - buil
  8. 自定义Android(安卓)Progress Bar的颜色
  9. Android(安卓)Robotium的自动化代码
  10. android中全屏显示