Service生命週期被分成四個部分,分別是被啟動服務的生命週期、被綁定服務的生命週期、被啟動又被綁定服務的生命週期以及當服務停止時清除服務。
Service 生命週期
#與Activity類似,Service也有自己的生命週期函數,在不同的時刻,系統會呼叫對應的Service生命週期函數,不過與Activity宣告週期相比,Service的宣告週期更加簡單。
(1)被啟動的服務的生命週期
如果一個Service被某個Activity 呼叫Context.startService 方法啟動,那麼不管是否有Activity使用bindService綁定或unbindService解除綁定到該Service,該Service都在後台運行。如果個Service被startService 方法多次啟動,那麼onCreate方法只會呼叫一次,onStart將會被呼叫多次(對應到呼叫startService的次數),系統只會建立Service的一個實例。該Service將會一直在背景運行,而不管對應程式的Activity是否正在執行,直到被呼叫stopService,或自身的stopSelf方法。當然如果系統資源不足,android系統也可能結束服務。
(2)被綁定的服務的生命週期
如果一個Service被某個Activity 呼叫Context.bindService 方法綁定啟動,不管呼叫bindService 呼叫幾次,onCreate方法都只會呼叫一次,同時onStart方法始終不會被呼叫。當連線建立之後,Service將會一直運行,除非呼叫Context.unbindService 斷開連線或之前呼叫bindService 的 Context 不存在了(如Activity被finish的時候),系統將會自動停止Service,對應onDestroy將會被呼叫。
(3)被啟動又被綁定的服務的生命週期
#如果一個Service又被啟動又被綁定,則該Service將會一直在後台運行。而且不管如何調用,onCreate始終只會調用一次,對應startService調用多少次,Service的onStart便會調用多少次。呼叫unbindService將不會停止Service,而必須呼叫 stopService 或 Service的 stopSelf 來停止服務。
(4)當服務停止時清除服務
當一個Service被終止(1、呼叫stopService;2、呼叫stopSelf;3、不再有綁定的連接(沒有被啟動))時,onDestroy方法將會被調用,在這裡你應該做一些清除工作,例如停止在Service中創建並運行的線程。
以上是service生命週期是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!