一 :Service的生命週期及啟動方式:
1:生命週期:
1:startService;
2:bindService;
下面貼出兩種方式啟動程式碼並說明兩者的區別:
Started:其他元件呼叫
startService()
方法啟動一個Service。一旦啟動,Service將一直執行在後臺(run in the background indefinitely)即便啟動Service的元件已被destroy。通常,一個被start的Service會在後臺執行單獨的操作,也並不給啟動它的元件返回結果。比如說,一個start的Service執行在後臺下載或上傳一個檔案的操作,完成之後,Service應自己停止。Bind:其他元件呼叫
bindService()
方法繫結一個Service。通過繫結方式啟動的Service是一個client-server結構,該Service可以與繫結它的元件進行互動。一個bound service僅在有元件與其繫結時才會執行(A bound service runs only as long as another application component is bound to it),多個元件可與一個service繫結,service不再與任何元件繫結時,該service會被destroy。
1:startService:
以上兩個截圖展示了startService的啟動方式以及資料的傳遞。Service接受引數,以及後續處理。
2:bindService:
以上兩個截圖介紹了bindservice啟動及傳遞資料。兩種啟動方式如果在Service有耗時操作,必須開啟執行緒處理,否則會有ANR異常。
兩種啟動方式下的使用場景:
1;音樂播放器比較適合startService,及時元件銷燬,service以及在後臺執行,除非手動執行銷燬Service;
2;下載檔案,bindservice,下載完成,元件銷燬,service也隨之銷燬。
二:IntentService的介紹以及和Service對比:
IntentService與其它執行緒區別:
以上內容向大家介紹了Service和IntentService的用法及區別;如有不足之處請大家及時指正交流,謝謝大家。(IntentService最好使用startService啟動)