方式一的生命周期:
通过startService()打开的Service的生命周期是:
onCreate()-> onStart()-> (运行中)(stopService执行) onDestroy()
方式二的生命周期:
通过bindService()打开的Service的生命周期:
onCreate()->onBind()->{onServiceConnected(ServiceConnection的方法)}(运行中)->(unbindService执行)onUnbind()->onDestroy();
方式三的生命周期:
startService 和bindService二者共同使用:
onCreate()->onStart()->onBind()->{onServiceConnected(ServiceConnection的方法)}(运行中)
(unbindService执行)onUnbind()->(再次执行bindService)onRebind()(onUnbind返回true时才会调用)
注意:onUnbind()返回false时,onBind和onUnbind只会被调用一次(onRebind不会被调用但onServiceConnected(ServiceConnection的方法)可以别多次调用;为true时,onRebind和onUnbind会被调用多次(onBind创建时只会执行一次);
onUnbind()返回false时生命周期如下:
onCreate()->onStart()->onBind()->{
返回
} (运行中)(执行unbindService)->onUnbind->(bindService)(无调用)->(onServiceConnected(ServiceConnection的方法被调用)->(执行unbindService)(无调用);
现象解释:
bindService可以调用onBind和onUnbind,也就是说先绑定,再解绑(返回true)。如果绑定了,
但没有成功解绑(返回false);是不允许再次绑定的;onRebind执行的条件也是当其能够成功解绑;
onServiceConnected(ServiceConnection的方法),是不管其有没有解绑的,是可以多次执行的;