Android 中Service生命週期

使用context.startService() 啓動Service

其生命週期爲context.startService() ->onCreate()- >onStart()->Service running-->context.stopService() | ->onDestroy() ->Service stop 
如果Service還沒有運行,則android先調用onCreate()然後調用onStart();
如果Service已經運行,則只調用onStart(),所以一個Service的onStart方法可能會重複調用多次。 

stopService的時候直接onDestroy,
如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在後臺運行。
該Service的調用者再啓動起來後可以通過stopService關閉Service。

所以調用startService的生命週期爲:onCreate --> onStart(可多次調用) --> onDestroy

對於bindService()啓動Service會經歷:
context.bindService()->onCreate()->onBind()->Service running-->onUnbind() -> onDestroy() ->Service stop

onBind將返回給客戶端一個IBind接口實例,IBind允許客戶端回調服務的方法,比如得到Service運行的狀態或其他操作。
這個時候把調用者(Context,例如Activity)會和Service綁定在一起,Context退出了,
Srevice就會調用onUnbind->onDestroy相應退出。 

所以調用bindService的生命週期爲:onCreate --> onBind(只一次,不可多次綁定) --> onUnbind --> onDestory。
一但銷燬activity它就結束,如果按home把它放到後臺,那他就不退出。


補充:
在Service每一次的開啓關閉過程中,只有onStart可被多次調用(通過多次startService調用),
其他onCreate,onBind,onUnbind,onDestory在一個生命週期中只能被調用一次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章