Android四大組件之Service詳解
一、Service簡(jiǎn)介
Service是Android程序中四大基礎(chǔ)組件之一,它和Activity一樣都是Context的子類,只不過它沒有UI界面,是在后臺(tái)運(yùn)行的組件。
Service是Android中實(shí)現(xiàn)程序后臺(tái)運(yùn)行的解決方案,它非常適用于去執(zhí)行那些不需要和用戶交互而且還要求長(zhǎng)期運(yùn)行的任務(wù)。Service默認(rèn)并不會(huì)運(yùn)行在子線程中,它也不運(yùn)行在一個(gè)獨(dú)立的進(jìn)程中,它同樣執(zhí)行在UI線程中,因此,不要在Service中執(zhí)行耗時(shí)的操作,除非你在Service中創(chuàng)建了子線程來完成耗時(shí)操作。
二、Service生命周期

1.startService / stopService
生命周期順序:onCreate->onStartCommand->onDestroy
OnCreate()
系統(tǒng)在service第一次創(chuàng)建時(shí)執(zhí)行此方法,來執(zhí)行只運(yùn)行一次的初始化工作。如果service已經(jīng)運(yùn)行,這個(gè)方法不會(huì)被調(diào)用。
onStartCommand()
每次客戶端調(diào)用startService()方法啟動(dòng)該Service都會(huì)回調(diào)該方法(多次調(diào)用)。一旦這個(gè)方法執(zhí)行,service就啟動(dòng)并且在后臺(tái)長(zhǎng)期運(yùn)行。通過調(diào)用stopSelf()或stopService()來停止服務(wù)。
OnDestory()
系統(tǒng)在service不再被使用并要銷毀時(shí)調(diào)用此方法(一次調(diào)用)。service應(yīng)在此方法中釋放資源,比如線程,已注冊(cè)的偵聽器,接收器等等.這是service收到的最后一個(gè)調(diào)用。
2.bindService / unbindService
生命周期順序:onCreate->onBind->onUnBind->onDestroy
同樣首先是OnCreate(),接著是
OnBind()
當(dāng)組件調(diào)用bindService()想要綁定到service時(shí)(比如想要執(zhí)行進(jìn)程間通訊)系統(tǒng)調(diào)用此方法(一次調(diào)用,一旦綁定后,下次再調(diào)用bindService()不會(huì)回調(diào)該方法)。在你的實(shí)現(xiàn)中,你必須提供一個(gè)返回一個(gè)IBinder來以使客戶端能夠使用它與service通訊,你必須總是實(shí)現(xiàn)這個(gè)方法,但是如果你不允許綁定,那么你應(yīng)返回null。
OnUnbind()
當(dāng)前組件調(diào)用unbindService(),想要解除與service的綁定時(shí)系統(tǒng)調(diào)用此方法(一次調(diào)用,一旦解除綁定后,下次再調(diào)用unbindService()會(huì)拋出異常)。
最后是OnDestory()
注意:通過bindService啟動(dòng)的Service的生命周期依附于啟動(dòng)它的Context。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Android SQLite數(shù)據(jù)庫(kù)增刪改查操作的使用詳解
本篇文章介紹了,在Android中SQLite數(shù)據(jù)庫(kù)增刪改查操作的使用詳解。需要的朋友參考下2013-04-04
Android實(shí)現(xiàn)列表元素動(dòng)態(tài)效果
本文將利用AnimatedList組件實(shí)現(xiàn)列表元素的一些動(dòng)態(tài)效果,例如添加元素時(shí)的漸現(xiàn)效果,刪除元素逐漸消失的效果等,感興趣的小伙伴可以了解一下2022-03-03
android開機(jī)自啟動(dòng)原理與實(shí)現(xiàn)案例(附源碼)
完成一下步驟后,啟動(dòng)一次程序,完成注冊(cè)。等下次手機(jī)開機(jī)時(shí),該軟件即會(huì)自動(dòng)啟動(dòng),具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-06-06
Android設(shè)備與外接U盤實(shí)現(xiàn)數(shù)據(jù)讀取操作的示例
本篇文章主要介紹了Android設(shè)備與外接U盤實(shí)現(xiàn)數(shù)據(jù)讀取操作的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
android實(shí)現(xiàn)點(diǎn)擊按鈕切換不同的fragment布局
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)點(diǎn)擊按鈕切換不同的fragment布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
淺談Android設(shè)計(jì)模式學(xué)習(xí)之觀察者模式
觀察者模式在實(shí)際項(xiàng)目中使用的也是非常頻繁的,它最常用的地方是GUI系統(tǒng)、訂閱——發(fā)布系統(tǒng)等。這篇文章主要介紹了淺談Android設(shè)計(jì)模式學(xué)習(xí)之觀察者模式,感興趣的小伙伴們可以參考一下2018-05-05
Android FTP服務(wù)器上傳文件攻略(代碼詳解)
這篇文章主要介紹了Android FTP服務(wù)器上傳文件攻略,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
Android ViewFlipper簡(jiǎn)單用法解析
這篇文章主要為大家詳細(xì)介紹了Android ViewFlipper簡(jiǎn)單用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09

