背景
最近開發遇到一個小小的問題,因爲沒怎麼用過IntentService ,所以對其生命週期也不很瞭解,還有工作原理。
intentService
-
intentService ------>> StartService 第一次
-
intentService ------>> BindService 第一次
-
intentService ------>> StartService 多次
-
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
- Service ------>> StartService 第一次
- Service ------>> BindService 第一次
- Service ------>> StartService 多次
- Service ------>> BindService 多次
無