Service相关的生命周期

来源:互联网 发布:sublime text 3运行js 编辑:程序博客网 时间:2024/05/22 15:04

方式一的生命周期:

通过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的方法),是不管其有没有解绑的,是可以多次执行的;




0 0
原创粉丝点击