android基礎-startService和bindService

知識點:

  1. service的生命週期
  2. 應用場景

1. service的生命週期
(1).startService執行的生命週期是 :onCreate→onStartCommand→onDestroy
多次執行startService 只會回調onStartCommand

(2).bindService執行的生命週期是:onCreate→onBind→onUnbind→onDestroy
如果在onBind中範圍了對應的binde,則會執行對應ServiceConnection中的onServiceConnected(),但是onServiceDisconnected() 在連接正常關閉的情況下是不會被調用的, 該方法只在Service 被破壞了或者被殺死的時候調用. 例如, 系統資源不足, 要關閉一些Services, 剛好連接綁定的 Service 是被關閉者之一, 這個時候onServiceDisconnected() 就會被調用。
(ps:bindservice的啓動還要根據第三個參數來判斷,這裏採用默認值)

(3) . 先startService後bindService 的生命週期是 :onCreate→onStartCommand→onBind→onUnbind→onDestroy
先bindService 後startService的生命週期是 :
onCreate→onBind→onStartCommand→onUnbind→onDestroy
(ps:這裏要注意stopService和unbindService,如果stop了,則一定會執行onUnbind→onDestory,但是如果只是unbind,則只會執行onUnbind,這裏是混合使用的關鍵點)

2. 應用場景
(1). startService,該類型一般只用來把一些與前臺無關的工作放到後臺中,前臺不在意這些工作,但是應用退出不會自動銷燬服務
(2). bindService,該類型一般是前臺把一些比較耗時或者需要一直工作並且需要反饋信息給回前臺的時候使用,比如後臺播放,但是前臺需要知道進度,不過應用退出也自動銷燬服務
(3). startService和bindService混合使用,該類型一般是需要把後臺任務信息反饋給前臺,並且退出應用也不關閉後臺服務,就是則行了startService和bindService之後,在退出應用只做unBindService不做stopSerivice的時候,比如後臺下載任務

總結
啓動service的知識是比較基礎的,但是service是現在基本每個軟件都會用,熟悉啓動的方式有助於我們瞭解項目的運行。雖然這次是比較基礎的知識,但是基礎打紮實了後面理解一下框架和原理會比較輕鬆,所以我打算慢慢的回顧以前學習過得知識,做好總結,一步步向前

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章