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);
④在Activity的onDestroy裏面,添加
unbindService(conn);
若是不加這一步,就會報android.app.ServiceConnectionLeaked: ******.MainActivity has leaked ServiceConnection的異常。
bindService()的執行過程以下:
bindService(intent,conn,flag)->Service:onCreate()->Service:onBind()->Activity:onServiceConnected()