Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 啟動 Service(startservice和bindservice) 兩種方式的區別

Android 啟動 Service(startservice和bindservice) 兩種方式的區別

編輯:Android開發實例

Android Service 生命周期可以促使移動設備的創新,讓用戶體驗到最優越的移動服務,只有broadcast receivers執行此方法的時候才是激活的,當 onReceive()返回的時候,它就是非激活狀態。

如果沒有程序停止它或者它自己停止,service將一直運行。在這種模式下,service開始於調用Context.startService() ,停止於Context.stopService(). service可以通過調用Android Service 生命周期() 或 Service.stopSelfResult()停止自己。不管調用多少次startService() ,只需要調用一次 stopService() 就可以停止service。

可以通過接口被外部程序調用。外部程序建立到service的連接,通過連接來操作service。建立連接調開始於Context.bindService(), 結束於Context.unbindService(). 多個客戶端可以綁定到同一個service,如果service沒有啟動, bindService() 可以選擇啟動它。

服務不能自己運行,需要通過調用Context.startService()或Context.bindService()方法啟動服務。這兩個方法都 可以啟動Service,但是它們的使用場合有所不同。使用startService()方法啟用服務,調用者與服務之間沒有關連,即使調用者退出了,服 務仍然運行。使用bindService()方法啟用服務,調用者與服務綁定在了一起,調用者一旦退出,服務也就終止,大有“不求同時生,必須同時死”的 特點。

如果打算采用Context.startService()方法啟動服務,在服務未被創建時,系統會先調用服務的onCreate()方法,接著調用onStart()方法。如果調用startService()方法前服務已經被創建,多次調用startService()方法並不會導致多次創建服務,但會導致多次調用onStart()方法。采用startService()方法啟動的服務,只能調用Context.stopService()方法結束服務,服務結束時會調用onDestroy()方法。

如果打算采用Context.bindService()方法啟動服務,在服務未被創建時,系統會先調用服務的 onCreate()方法,接著調用onBind()方法。這個時候調用者和服務綁定在一起,調用者退出了,系統就會先調用服務的onUnbind()方 法,接著調用onDestroy()方法。如果調用bindService()方法前服務已經被綁定,多次調用bindService()方法並不會導致 多次創建服務及綁定(也就是說onCreate()和onBind()方法並不會被多次調用)。如果調用者希望與正在綁定的服務解除綁定,可以調用 unbindService()方法,調用該方法也會導致系統調用服務的onUnbind()-->onDestroy()方法。

總結:Service 的兩種啟動方法和區別

Service的生命周期方法onCreate, onStart, onDestroy

有兩種方式啟動一個Service,他們對Service生命周期的影響是不一樣的。

1 通過startService

  Service會經歷 onCreate -> onStart

 stopService的時候直接onDestroy

如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在後台運行。下次調用者再起來可以stopService。

2 通過bindService

  Service只會運行onCreate, 這個時候服務的調用者和服務綁定在一起

調用者退出了,Srevice就會調用onUnbind->onDestroyed所謂綁定在一起就共存亡了。並且這種方式還可以使得
調用方(例如)調用服務上的其他的方法。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved