Activity Service生命週期圖





1、使用startService() 啓動Service

startService() ->onCreate()- >onStart()->Service running-->(如果調用context.stopService() )->onDestroy() ->Service shut down

a、如果Service還沒有運行,先調用onCreate(),然後調用onStart();
b、如果Service已經運行,只調用onStart(),所以一個Service的onStart方法可能會重複調用多次,調用stopService的時候直接onDestroy

c、如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在後臺運行。

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

2、bindService()啓動Service:
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。


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


參考博客:

http://blog.csdn.net/agods/article/details/7468431



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