標籤:
第一步:繼承Service類 public class SMSService extends Service {}
第二步:在AndroidManifest.xml檔案中的<application>節點裡對服務進行配置:<service android:name=".SMSService" />
第三步:啟動服務
方法一:context.startService():調用者與服務之間沒有關連,即使調用者退出了,服務仍然運行
方法二:context.bindService():調用者與服務綁定在了一起,調用者一旦退出,服務也就終止,大有“不求同時生,必須同時死”的特點
- 啟動指定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()方法
onCreate():
該方法在服務被建立時調用,該方法只會被調用一次,無論調用多少次startService()或bindService()方法,服務也只被建立一次。
onDestroy():
該方法在服務被終止時調用。與採用Context.startService()方法啟動服務有關的生命週期方法
onStart():
只有採用Context.startService()方法啟動服務時才會回調該方法。該方法在服務開始運行時被調用。多次調用startService()方法儘管不會多次建立服務,但onStart()方法會被多次調用。
onBind():
只有採用Context.bindService()方法啟動服務時才會回調該方法。該方法在調用者與服務綁定時被調用,當調用者與服務已經綁定,多次調用Context.bindService()方法並不會導致該方法被多次調用。
onUnbind():
只有採用Context.bindService()方法啟動服務時才會回調該方法。該方法在調用者與服務解除綁定時被調用
概述: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():重新綁定
概述:1 使用隱式意圖可以啟動另外一個應用程式的服務,從而實現跨進程啟動服務
2 在向清單中註冊Service是通過添加intent-filter,允許裝置中其他應用程式通過隱式意圖啟動自己的Service
提示:若不想讓其他應用程式啟動本程式中的Service,不要在Service標籤中聲明intent-filter
Android四大套件Service