Service和IntentService的不同點

背景

最近開發遇到一個小小的問題,因爲沒怎麼用過IntentService ,所以對其生命週期也不很瞭解,還有工作原理。


intentService

  1. intentService ------>> StartService 第一次
    這裏寫圖片描述

  2. intentService ------>> BindService 第一次
    這裏寫圖片描述

  3. intentService ------>> StartService 多次
    這裏寫圖片描述

  4. intentService ------>> BindService 多次

無任何生命週期回調

當我們通過startService多次啓動了IntentService,這會產生多個job,由於IntentService只持有一個工作線程,所以每次onHandleIntent只能處理一個job。多個job,IntentService會如何處理?處理方式是one-by-one,也就是一個一個按照先後順序處理,先將intent1傳入onHandleIntent,讓其完成job1,然後將intent2傳入onHandleIntent,讓其完成job2…這樣直至所有job完成,所以我們IntentService不能並行的執行多個job,只能一個一個的按照先後順序完成,當所有job完成的時候IntentService就銷燬了,會執行onDestroy回調方法

總結:
onHandlerIntent 其實是相當於一次 Thread 進行一次Run。 可以通過多次啓動多次開啓IntentService 來執行。

方法:
1.外部多次while,startService ----------- 意味着同時開啓多次Thread
2.內部在onHandlerIntent 內部 數據處理結束後,就在一次StartService 重新啓動 --------------------意味着一次線程結束在開啓一次線程 (串)
3.也可以在內部while(flag)
---------------意味這在一個線程內處理跟多的操作


Service

  1. Service ------>> StartService 第一次
    這裏寫圖片描述
  2. Service ------>> BindService 第一次
    這裏寫圖片描述
  3. Service ------>> StartService 多次
    這裏寫圖片描述
  4. Service ------>> BindService 多次

本章完

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