Android Service生命週期淺析

風靈使發表於2018-11-12

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()

相關文章