一.基礎知識
服務一般分為兩種:
1:本地服務, Local Service 用於應用程序內部。在Service可以調用Context.startService()啟動,調用Context.stopService()結束。 在內部可以調用Service.stopSelf() 或 Service.stopSelfResult()來自己停止。無論調用了多少次startService(),都只需調用一次 stopService()來停止。
2:遠程服務, Remote Service 用於android系統內部的應用程序之間。可以定義接口並把接口暴露出來,以便其他應用進行操作。客戶端建立到服務對象的連接,並通過那個連接來調用服 務。調用Context.bindService()方法建立連接,並啟動,以調用 Context.unbindService()關閉連接。多個客戶端可以綁定至同一個服務。如果服務此時還沒有加載,bindService()會先加 載它。
提供給可被其他應用復用,比如定義一個天氣預報服務,提供與其他應用調用即可。
那么先來看Service的生命周期吧:如圖:
context.startService() ->onCreate()- >onStartCommand()->Service running--調用context.stopService() ->onDestroy()
context.bindService()->onCreate()->onBind()->Service running--調用>onUnbind() -> onDestroy() 從上訴可以知道分別對應本地的,,以及遠程的,也對應不同的方式啟動這個服務。
二.注意事項
2.1 同一服務,多次啟動,服務實際執行的過程
第一次 啟動服務時,運行 onCreate -->onStartCommand
后面在啟動服務時,服務只執行onStartCommand
在實際使用過程中,通過Intent 傳遞數據,在OnStartCommand中執行。