五.Android的Service生命周期

1.service 概述

  • 服務是脫離UI的一種運行程序,它負責了一些不必顯示在屏幕上的運行過程。
  • 服務分為:本地服務和遠程服務,此處只討論本地服務。
  • 兩種啟動service的方式:startService和bindService。

2.Service生命周期

2.1 Service基本生命周期

  • 提到生命周期,就要提到兩種開啟Service的方法了:
    1. 直接開啟startService,使用stopService關閉。
      stratService和stopService一一對應,一個開啟,一個結(jié)束。


  1. 綁定開啟bindService,使用unbindService解綁關閉。
    bindServic和unbindService一一對應,一個綁定開啟,一個解綁結(jié)束。



    兩者區(qū)別是:

  2. start和stop只能開啟和關閉,無法操作service。bind和unbind可以操作service。
  3. start開啟的service,調(diào)用者退出后service仍然存在。bind開啟的service,調(diào)用者退出后,隨著調(diào)用者銷毀。

2.2 Service生命周期進階

生命周期過程中的方法一共有五種:

方法 含義
onCreate() 創(chuàng)建
onStartCommand() 開始
onDestroy() 銷毀
onBind() 綁定
onUnbind() 解綁

那什么時候調(diào)用這些方法呢?
注意以下條件:
1.在整個生命周期內(nèi),只有startCommand()能被多次調(diào)用。其他方法只能被調(diào)用一次。(即只能綁定和解綁一次。)
2.綁定后沒有解綁,無法使用stopService()將其停止。
3.如果已經(jīng)onCreate(),那么startService()將調(diào)用startCommand()。
4.如果是以bindService開啟,那么使用unbindService時就會自動調(diào)用onDestroy銷毀。
根據(jù)條件所有的判定圖如下:

startService()
stopService()
bindService()
unbindService()

2.3 例子練習

看表格里的順序?qū)懻{(diào)用的方法,推薦把右邊遮起來0.0:
start=startService
stop=stopService
bind=bindService
unbind=unbindService

順序 答案
start->stop A-B-C
bind->unbind A-D-E-C
start->start A-B-B
start->bind->stop A-B-D
start->bind->unbind A-B-D-E
bind->start->unbind A-D-B-E

A:onCreate()
B:onStartCommand()
C:onDestroy()
D:onBind()
E:onUnbind()

3.總結(jié)

總算把Service的生命周期弄清楚了。四個操作方法和五個內(nèi)部方法如下:

方法 含義
startService() 開啟服務
stopService() 關閉服務
bindService() 綁定服務
unbindService() 解綁服務
方法 含義
onCreate() 創(chuàng)建
onStartCommand() 開始
onDestroy() 銷毀
onBind() 綁定
onUnbind() 解綁

Github源碼地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容