- 首先作为四大组件,使用的时候别忘了在清单文件中注册。
生命周期
- startService
attachBaseContext–onCreate–onStartCommand - stopService
onDestroy - bindService
attachBaseContext–onCreate–onBind
并且ServiceConnection回调onServiceConnected。 - unbindService
onUnbind–onDestroy。
上面是一组一组调用的情况,即:startService+stopService;bindService+unbindService。
conn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
isBind = true;
Log.i("life", "ServiceConnection-----onServiceConnected");
}
@Override
public void onServiceDisconnected(ComponentName name) {
isBind = false;
Log.i("life", "ServiceConnection----onServiceDisconnected");
}
};
因为bindService的时候会返回一个接口IBinder对象,这个对象可以是扩展后的类。然后可以调用一些逻辑方法。达到activity中控制service的逻辑目的。
注意的地方
- 可以先startService再bindService,然后达到即启动有可以控制逻辑的目标。
- 先startService再bindService之后,也就是service存在绑定的情况下,直接stopService的时候,service不会走任何回调,直到解绑所有的时候才会onDestroy。
- ServiceConnection,这个接口的方法的回调了
onServiceConnected,绑定成功之后,会回调。
onServiceDisconnected,正常的解绑操作是不会被回调的,只有当service意外丢失才会被调用。
可以看看:startService–bindService-stopService–unbindService
startService–bindService-unbindService–stopService,两种调用方式的不同生命周期。