Android中bindService的使用方法

    bindService用於綁定一個服務。這樣當bindService(intent,conn,flags)後,就會綁定一個服務。這樣作能夠得到這個服務對象自己,而用startService(intent)的方法只能啓動服務。 android

    bindService方式的通常過程: app

新建Service類BindService。在BindService類裏新建內部類MyBinder,繼承自Binder(Binder實現IBinder接口)。MyBinder提供方法返回BindService實例。 ide

    public class MyBinder extends Binder{
       
       
public BindService getService(){
           
return BindService.this;
        }
    }
this

實例化MyBinder獲得mybinder對象; spa

重寫onBind()方法: 對象

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

在Activity裏,實例化ServiceConnection接口的實現類,重寫onServiceConnected()和onServiceDisconnected()方法 接口

ServiceConnection conn=new ServiceConnection(){ get

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

  @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()

相關文章
相關標籤/搜索