Android四大套件Service

來源:互聯網
上載者:User

標籤:

  • 以下是一個用XMind編寫的Service概述

  • Service組件開發      

        第一步:繼承Service類  public class SMSService extends Service {}

        第二步:在AndroidManifest.xml檔案中的<application>節點裡對服務進行配置:<service android:name=".SMSService" />

        第三步:啟動服務

        方法一:context.startService():調用者與服務之間沒有關連,即使調用者退出了,服務仍然運行

        方法二:context.bindService():調用者與服務綁定在了一起,調用者一旦退出,服務也就終止,大有“不求同時生,必須同時死”的特點

  • 啟動/停止/綁定Service的相關方法
  1. 啟動指定Service

          pubic ComponentName StartService (Intent dervice)

          參數Intent,在該意圖中指定啟動的目標service.啟動方法有顯和隱式意圖兩種

          說明: startService()在ContextWrapper類中定義,該類的父類是Context

          ContextWrapper類是Activity的間接父類和Service的直接父類

          執行個體:Intent intent = new Intent(元組件,目標Service.class);startService(intent);

      2. 停止Service

          boolean stopService(Intent Service)

          和啟動相同

          stopService 方法在ContextWrapper類中定義

      3. 在Service內部停止Service

          final stopSelf()

          該方法不會回調Service中的onDestory方法

      4. 與intent指定的目標Service綁定

          bindService(Intent, ServiceConnection, int flag)

          intent:啟動intent對象中指定目標的Service

          conn:實現了ServiceConnection介面的對象,該對象用於監聽訪問者與service之間的綁定情況,成功後將調用SCNN對象的onServiceConnectend方法

          flags:綁定時是否自動建立Service.值為0是不自動建立Service當Bind_AUTO_CREATE常量(值為1)時,自動建立Service

          Service和其綁定的activity生命週期之間的關係

      5. ServiceConnection介面

          作用:用於監聽訪問者與Service之間的串連情況,該介面定義了兩個方法

          onServiceconnected(Conponentname name, INinder Service)

          作用:綁定成功是觸發本方法

          name:被綁定的Service執行個體

          Service:通過被綁定的Service類中的onBind方法返回一個Ibinder類型的對象

          onServiceDisconnected(ConponontName name)

          綁定出現異常,引用程式出現崩潰時觸發本方法

      6. bubindService(ServiceConnection conn)

          解除conn相關的Service的綁定

          conn是一個實現了SCNN的介面的對象

          bubindService執行後,系統會回調Service的onDestory()方法

  • service生命週期       

         onCreate():

         該方法在服務被建立時調用,該方法只會被調用一次,無論調用多少次startService()或bindService()方法,服務也只被建立一次。

         onDestroy():

         該方法在服務被終止時調用。與採用Context.startService()方法啟動服務有關的生命週期方法

         onStart():

         只有採用Context.startService()方法啟動服務時才會回調該方法。該方法在服務開始運行時被調用。多次調用startService()方法儘管不會多次建立服務,但onStart()方法會被多次調用。

         onBind():

         只有採用Context.bindService()方法啟動服務時才會回調該方法。該方法在調用者與服務綁定時被調用,當調用者與服務已經綁定,多次調用Context.bindService()方法並不會導致該方法被多次調用。

         onUnbind():

         只有採用Context.bindService()方法啟動服務時才會回調該方法。該方法在調用者與服務解除綁定時被調用

  • Service綁定原理

        概述:1 一個Ser和一個activity只能綁定一次

               2 一個activity可以同時綁定多個Service

               3 一個ser可以和多個act綁定

               4 當綁定到一個Service,且講flag設定為BIND_AUTO_CREATE時,如果該Service未建立,在先建立ServiceonCreate0,然後在綁定,如果已建立,則直接綁定

               5 Ser被多個act綁定只有當所有用戶端被解除綁定才會被destory

               6 Binder類用於多個用戶端與服務端通訊,Binder意思是別針,將用戶端與服務端綁定到一起

         綁定組件時資料傳遞分析(代碼)

         bindService與startservice比較:

               1 通過多次調用startService每次都觸發Service類中的onStartConnand(),並用Intent對象向Service傳遞不同的資料,從而達到控制Service,但是不方便

               2 通過綁定的方式,使用onBind傳遞給ServiceConnection的Ibinder控制Service方式比較便捷,實際開發中推薦使用這種方式

         關於onServiceDisconnected方法的調用:

               1 當activity與Service綁定是,若出現進程崩潰,則onServiceDisconnected方法將觸發

               2 當進程被終止是,將觸發onServiceDisConnected

               3 onServiceDisConnected方法由Android系統調用,不要程式觸發,不要在此方法中寫商務邏輯代碼

         onRebind():重新綁定

  • 隱式意圖啟動Service

         概述:1 使用隱式意圖可以啟動另外一個應用程式的服務,從而實現跨進程啟動服務

                2 在向清單中註冊Service是通過添加intent-filter,允許裝置中其他應用程式通過隱式意圖啟動自己的Service

                提示:若不想讓其他應用程式啟動本程式中的Service,不要在Service標籤中聲明intent-filter

Android四大套件Service

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.