欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2015年11月09日 10:54:45   投稿:mrr  
andrid service 兩種啟動方式:第一種startservice,第二種bindservice,大家對這兩種啟動方式的區(qū)別了解嗎,下面跟著小編一起學(xué)習(xí)吧

Android Service 生命周期可以促使移動設(shè)備的創(chuàng)新,讓用戶體驗到最優(yōu)越的移動服務(wù),只有broadcast receivers執(zhí)行此方法的時候才是激活的,當(dāng) onReceive()返回的時候,它就是非激活狀態(tài)。

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

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

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

如果打算采用Context.startService()方法啟動服務(wù),在服務(wù)未被創(chuàng)建時,系統(tǒng)會先調(diào)用服務(wù)的onCreate()方法,接著調(diào)用onStart()方法。如果調(diào)用startService()方法前服務(wù)已經(jīng)被創(chuàng)建,多次調(diào)用startService()方法并不會導(dǎo)致多次創(chuàng)建服務(wù),但會導(dǎo)致多次調(diào)用onStart()方法。采用startService()方法啟動的服務(wù),只能調(diào)用Context.stopService()方法結(jié)束服務(wù),服務(wù)結(jié)束時會調(diào)用onDestroy()方法。

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

總結(jié):Service 的兩種啟動方法和區(qū)別

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

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

1 通過startService

  Service會經(jīng)歷 onCreate -> onStart

 stopService的時候直接onDestroy

如果是調(diào)用者自己直接退出而沒有調(diào)用stopService的話,Service會一直在后臺運行。下次調(diào)用者再起來可以stopService。

2 通過bindService

  Service只會運行onCreate, 這個時候服務(wù)的調(diào)用者和服務(wù)綁定在一起

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

相關(guān)文章

最新評論