使用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在一個生命週期中只能被調用一次。