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