Android 四大元件之二-------Service

周雲鋒_2018發表於2018-05-02

一 :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:


Android 四大元件之二-------Service

Android 四大元件之二-------Service

以上兩個截圖展示了startService的啟動方式以及資料的傳遞。Service接受引數,以及後續處理。

2:bindService:

Android 四大元件之二-------Service

Android 四大元件之二-------Service

以上兩個截圖介紹了bindservice啟動及傳遞資料。兩種啟動方式如果在Service有耗時操作,必須開啟執行緒處理,否則會有ANR異常。

兩種啟動方式下的使用場景:

1;音樂播放器比較適合startService,及時元件銷燬,service以及在後臺執行,除非手動執行銷燬Service;

2;下載檔案,bindservice,下載完成,元件銷燬,service也隨之銷燬。

二:IntentService的介紹以及和Service對比:

Android 四大元件之二-------Service


IntentService與其它執行緒區別:

Android 四大元件之二-------Service

以上內容向大家介紹了Service和IntentService的用法及區別;如有不足之處請大家及時指正交流,謝謝大家。(IntentService最好使用startService啟動)


相關文章