Service 作爲 Android四大組件之一,應用非常廣泛。和Activity一樣,Service 也有一系列的生命週期回調函數,我們可以用來監測 Service狀態變化,並且在適當的時候執行適當的工作。
Service生命週期圖
1. 生命週期狀態
Service生命週期流程圖:
Service生命週期流程圖
-
onCreate():
首次創建服務時,系統將調用此方法。如果服務已在運行,則不會調用此方法,該方法只調用一次。 -
onStartCommand():
當另一個組件通過調用startService()
請求啓動服務時,系統將調用此方法。 -
onDestroy():
當服務不再使用且將被銷燬時,系統將調用此方法。 -
onBind():
當另一個組件通過調用bindService()
與服務綁定時,系統將調用此方法。 -
onUnbind():
當另一個組件通過調用unbindService()
與服務解綁時,系統將調用此方法。 -
onRebind():
當舊的組件與服務解綁後,另一個新的組件與服務綁定,onUnbind()
返回true時,系統將調用此方法。
2. 生命週期方法
在Service的生命週期裏,常用的方法有:
- 手動調用的方法:
手動調用方法 | 作用 |
---|---|
startService() |
啓動服務 |
stopService() |
關閉服務 |
bindService() |
綁定服務 |
unbindService() |
解綁服務 |
- 自動調用的方法:
自動調用方法 | 作用 |
---|---|
onCreat() |
創建服務 |
onStartCommand() |
開始服務 |
onDestroy() |
銷燬服務 |
onBind() |
綁定服務 |
onUnbind() |
解綁服務 |
3. 生命週期調用
1)啓動Service服務
單次:startService() —> onCreate() —> onStartCommand()
多次:startService() —> onCreate() —> onStartCommand() —> onStartCommand()
2)停止Service服務stopService() —> onDestroy()
3)綁定Service服務bindService() —> onCreate() —> onBind()
4)解綁Service服務unbindService() —> onUnbind() —> onDestroy()
5)啓動綁定Service服務startService() —> onCreate() —> onStartCommand() —> bindService() —> onBind()
6)解綁停止Service服務unbindService() —> onUnbind() —> stopService() —> onDestroy()
7)解綁綁定Service服務unbindService() —> onUnbind(ture) —> bindService() —> onRebind()
鏈接:https://www.jianshu.com/p/cc25fbb5c0b3
。