Android 啟動 Service(startservice和bindservice) 兩種方式的區(qū)別
Android Service 生命周期可以促使移動設備的創(chuàng)新,讓用戶體驗到最優(yōu)越的移動服務,只有broadcast receivers執(zhí)行此方法的時候才是激活的,當 onReceive()返回的時候,它就是非激活狀態(tài)。
如果沒有程序停止它或者它自己停止,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()方法啟動服務,在服務未被創(chuàng)建時,系統(tǒng)會先調用服務的onCreate()方法,接著調用onStart()方法。如果調用startService()方法前服務已經被創(chuàng)建,多次調用startService()方法并不會導致多次創(chuàng)建服務,但會導致多次調用onStart()方法。采用startService()方法啟動的服務,只能調用Context.stopService()方法結束服務,服務結束時會調用onDestroy()方法。
如果打算采用Context.bindService()方法啟動服務,在服務未被創(chuàng)建時,系統(tǒng)會先調用服務的 onCreate()方法,接著調用onBind()方法。這個時候調用者和服務綁定在一起,調用者退出了,系統(tǒng)就會先調用服務的onUnbind()方 法,接著調用onDestroy()方法。如果調用bindService()方法前服務已經被綁定,多次調用bindService()方法并不會導致 多次創(chuàng)建服務及綁定(也就是說onCreate()和onBind()方法并不會被多次調用)。如果調用者希望與正在綁定的服務解除綁定,可以調用 unbindService()方法,調用該方法也會導致系統(tǒng)調用服務的onUnbind()-->onDestroy()方法。
總結:Service 的兩種啟動方法和區(qū)別
Service的生命周期方法onCreate, onStart, onDestroy
有兩種方式啟動一個Service,他們對Service生命周期的影響是不一樣的。
1 通過startService
Service會經歷 onCreate -> onStart
stopService的時候直接onDestroy
如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在后臺運行。下次調用者再起來可以stopService。
2 通過bindService
Service只會運行onCreate, 這個時候服務的調用者和服務綁定在一起
調用者退出了,Srevice就會調用onUnbind->onDestroyed所謂綁定在一起就共存亡了。并且這種方式還可以使得
調用方(例如)調用服務上的其他的方法。
相關文章
Android學習筆記之ContentProvider和Uri詳解
本篇文章主要介紹了Android學習筆記之ContentProvider和Uri詳解,對于學習Android的朋友具有一定的參考價值,有需要可以可以了解一下。2016-11-11
解析:繼承ViewGroup后的子類如何重寫onMeasure方法
本篇文章是對繼承ViewGroup后的子類如何重寫onMeasure方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06
Android開發(fā)實現(xiàn)布局中為控件添加選擇器的方法
這篇文章主要介紹了Android開發(fā)實現(xiàn)布局中為控件添加選擇器的方法,涉及Android開發(fā)中布局設置的相關操作技巧,需要的朋友可以參考下2017-10-10
Android PreferenceActivity與PreferenceFragment詳解及簡單實例
這篇文章主要介紹了Android PreferenceActivity與PreferenceFragment詳解及簡單實例的相關資料,需要的朋友可以參考下2016-12-12
Android RecyclerView自定義上拉和下拉刷新效果
這篇文章主要為大家詳細介紹了Android RecyclerView自定義上拉和下拉刷新效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Android SharedPreferences存取操作以及封裝詳解
SharedPreferences是安卓平臺上一個輕量級的存儲類,用來保存應用的一些常用配置,比如Activity狀態(tài),Activity暫停時,將此activity的狀態(tài)保存到SharedPereferences中;當Activity重載,系統(tǒng)回調方法onSaveInstanceState時,再從SharedPreferences中將值取出2021-11-11

