Android Service生命週期淺析
阿新 • • 發佈:2018-11-12
Service
作為 Android四大元件之一,應用非常廣泛。和Activity
一樣,Service
也有一系列的生命週期回撥函式,我們可以用來監測 Service
狀態變化,並且在適當的時候執行適當的工作。
Service生命週期圖
1. 生命週期狀態
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()