bindService用于绑定一个服务。这样当bindService(intent,conn,flags)后,就会绑定一个服务。这样作能够得到这个服务对象自己,而用startService(intent)的方法只能启动服务。android
bindService方式的通常过程:web
①新建Service类BindService。在BindService类里新建内部类MyBinder,继承自Binder(Binder实现IBinder接口)。MyBinder提供方法返回BindService实例。app
public class MyBinder extends Binder{
public BindService getService(){
return BindService.this;
}
}
ide
实例化MyBinder获得mybinder对象;this
重写onBind()方法:spa
@Override
public IBinder onBind(Intent intent) {
return mybinder;
}orm
②在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()