1. 程式人生 > >Android中bindService的使用方法

Android中bindService的使用方法

bindService用於繫結一個服務。這樣當bindService(intent,conn,flags)後,就會繫結一個服務。這樣做可以獲得這個服務物件本身,而用startService(intent)的方法只能啟動服務。

    bindService方式的一般過程:

新建Service類BindService。在BindService類裡新建內部類MyBinder,繼承自Binder(Binder實現IBinder介面)。MyBinder提供方法返回BindService例項。

    publicclass MyBinder extends Binder{
        
        

public BindService getService(){
            
return BindService.this;
        }
    }

例項化MyBinder得到mybinder物件;

重寫onBind()方法:

 @Override
 public IBinder onBind(Intent intent) {
  return mybinder;
 }

在Activity裡,例項化ServiceConnection介面的實現類,重寫onServiceConnected()和onServiceDisconnected()方法

ServiceConnection conn=new ServiceConnection(){

  @Override
  public void onServiceConnected(ComponentName name, IBinder service) {
  }

  @Override
  public void onServiceDisconnected(ComponentName name) {
  }

};

在Activity的onCreate()方法裡,新建Intent,並繫結服務

        Intent intent=new Intent(MainActivity.this,BindService.class); 
        bindService(intent, conn,BIND_AUTO_CREATE);

在Activity的onDestroy裡面,新增

unbindService(conn);

如果不加這一步,就會報android.app.ServiceConnectionLeaked: ******.MainActivity has leaked ServiceConnection的異常。

bindService()的執行過程如下:

bindService(intent,conn,flag)->Service:onCreate()->Service:onBind()->Activity:onServiceConnected()

原文:http://my.oschina.net/u/141330/blog/100429