Android中Service的啟動方式及Activity與Service的通訊方式

一隻有交流障礙的醜程式猿發表於2018-02-28

Service啟動的兩種方式

1.通過startService啟動

使用Service的步驟:

  1. 定義一個類繼承Service
  2. 在Manifest.xml檔案中配置該Service
  3. 使用Context的startService(Intent)方法啟動該Service
  4. 不再使用時,呼叫stopService(Intent)方法停止該服務

生命週期:

onCreate()--->onStartCommand() ---> onDestory()
當Service已經啟動時,不再呼叫onCreate方法,而會呼叫onStart和onStartCommand方法
生命週期與Activity不同,Activity結束後Service並不跟隨結束

2.通過bindService啟動

使用Service的步驟:

  1. 定義一個類繼承Service
  2. 在Manifest.xml檔案中配置該Service
  3. 使用Context的bindService(Intent, ServiceConnection, int)方法啟動該Service
  4. 不再使用時,呼叫unbindService(ServiceConnection)方法停止該服務

生命週期:

onCreate() --->onBind()--->onunbind()--->onDestory()
生命週期與Activity相同,Activity結束後Service跟隨結束

Activity與Service的通訊方式

  1. 不論是start還是bind,都可以在開始時通過intent攜帶一定量資料
  2. 通過Broadcast,Activity傳送廣播,Service接收;或者Service傳送廣播,Activity接收
  3. 通過bind方式啟動時,可以通過實現ServiceConnection來完成Activity和Service的互動

參考資料

Android 服務兩種啟動方式的區別

Android Activity與Service的通訊方式

相關文章