Android Service的分類詳解


  按照啟動方式分類

  谷歌官網對Service的分類

  Service根據啟動方式分為兩類:StartedBound。其中,Started()是通過startService()來啟動,主要用於程序內部使用的Service,而Bound是通過bindService()來啟動,允許多個應用程序共享同一個Service

  Started Service

  1.startService()來啟動

  startService通過Activitycontact

  調用startService(service).

  2,一旦啟動,就運行在后台,即便啟動它的對象(Activity)都銷毀了

  3,通常只啟動,不返回值

  4,通常網絡上傳或者下載,操作完成后,自動停止

  onStartCommand()

  onStartCommand服務里面的方法

  Bound Service

  1,bindService()來綁定

  會調用bindService來綁定

  2,提供客戶端服務器接口來啟動

  它有個客戶端和服務器段的模型

  3,發送請求,得到返回值,甚至通過IPC來通訊

  ipc內部進程通訊來進行通訊。

  4,一個服務可以被多個調用者綁定,只要有一個綁定者,服務運行,所有綁定者都退出,服務退出

  我現在同樣是一個服務,我可能用Activity A跟它綁定一下,B跟他綁定一下,當我A退出了的時候,由於B還綁定的,所以這個服務還不會退出。

  就是當所有的綁定者都退出了,我們的服務才會退出。

  onBind()

  他會用到的一個重載方法叫onBind

  按服務性質分

  Local Service 

  本地服務,指的就是同一個進程,用於應用程序內部

  功能:用於實現應用程序自己的一些耗時任務,比如查詢升級信息,並不占用應用程序比如Activity所屬線程,而是單開線程后台執行,這樣用戶體驗比較好。

  使用:在Service可以調用Context.startService()啟動,調用Context.stopService()結束。在內部可以調用Service.stopSelf() Service.stopSelfResult()來自己停止。無論調用了多少次startService(),都只需調用一次stopService()來停止。

  Remote Service  

  遠程服務,在android里面遠程指的是不同的進程之間也會有服務器端客戶端的模型,用於android系統內部的應用程序之間。

  功能:可被其他應用程序復用,比如天氣預報服務,其他應用程序不需要再寫這樣的服務,調用已有的即可。

  使用:可以定義接口並把接口暴露出來,以便其他應用進行操作。客戶端建立到服務對象的連接,並通過那個連接來調用服務。調用Context.bindService()方法建立連接,並啟動,以調用 Context.unbindService()關閉連接。多個客戶端可以綁定至同一個服務。如果服務此時還沒有加載,bindService()會先加載它。

  按實現方法分類

  Java Service

  Native Service

  原生服務就是我們用cc++,實現的系統級的服務我們可以把它當成在library內層。

  Native Service,這是Android系統里的一種特色,就是通過C++或是C代碼寫出來的,供Java進行遠程調用的Remote Service,因為C/C++代碼生成的是Native代碼(機器代碼),於是叫Native Service。隨着Android系統的性能需求越來越高,Native Service需求將越來越高。

  在Service里面要用到它,就不需要再manifest里面配置好,有了配置就知道,manifest所有的元素都是類,所以我們肯定有個Service的類。

Service的配置很簡單,就是配置一下它的名字就好了。

 

 

原文鏈接:http://www.maiziedu.com/wiki/component/classify/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM