android 四大組件之Service

  Service是android四大組件之一,可以理解爲是Activity沒有交互界面的一種實現方式,通常是實現後臺任務的首選,比如(音樂播放,後臺下載等等),本篇博客將簡單介紹Service的使用和生命週期

1.創建一個Service的實現類
  很簡單,就是創建一個類去繼承一個Service子類,查看Service類的源代碼發現Service是一個抽象類,並且有一個抽象方法onBind, 重寫onBind方法,就實現了一個Service的實現類

這裏寫圖片描述

2.android的四大組件都需要註冊,Service也不例外,否則不能啓動服務
  Service註冊和Activity註冊是一樣的,都是在<\application>節點下聲明的

這裏寫圖片描述

  在Service節點下添加了一個過濾條件,指定該如何訪問該Service,但是我在啓動Service的Intent中沒有添加該Action,也能啓動,有大神能指教下,在此謝謝

3.Service不能自動運行,需用調用啓動和關閉服務,有兩種方式
  一、 Context.startService()啓動服務,只能用Context.stopService()來關閉服務
  二、Context.bindService()啓動服務,只能用Context.unbindService()來關閉服務

4.Service的生命週期,爲了演示Service的生命週期,將上面的Service實現類重寫以下方法 onCreate() onStartCommand() onUnbind() onDestroy()

這裏寫圖片描述

  使用Context.startService()啓動服務,Context.stopService()來關閉服務的生命週期如下

這裏寫圖片描述

  執行Context.startService()後,調用了onCreate和onStartCommand方法,執行Context.stopService()後調用了onDestroy方法

這裏寫圖片描述

  當Service已運行,再次執行Context.startService()後,會調用onStartCommand方法,不在執行onCreate方法,執行Context.stopService()後調用了onDestroy方法

  使用Context.bindService()啓動服務,Context.unbindService()來關閉服務,啓動者與service綁定在一起了,啓動者退出,service也跟着停止,Context.bindService(Intent, ServiceConnection, int flag) ServiceConnection:是一個接口,當服務和訪問者連接成功,調用onServiceConnected()方法,斷開連接調用onServiceDisconnected()方法, int參數一般傳Context.BIND_AUTO_CREATE就可以了

這裏寫圖片描述

  生命週期如下

這裏寫圖片描述

  當執行Context.bindService()方法,調用了onCreate方法和onBind方法,執行完後,回調了ServiceConnection的onServiceConnected方法,綁定成功,執行Context.unbindService()方法,調用了onUnbind方法,並沒有回調ServiceConnection的onServiceDisconnected方法,原因在於該方法,只是在內存不足時,異常斷開連接時,纔會觸發,最後調用onDectory方法

這裏寫圖片描述

  當Service已啓動,再次執行Context.BindService方法,沒有任何響應

發佈了30 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章