溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android四大組件之Service詳解

發(fā)布時(shí)間:2020-09-25 05:40:06 來(lái)源:腳本之家 閱讀:145 作者:*是杯酒漸濃* 欄目:移動(dòng)開發(fā)

一、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)建了子線程來(lái)完成耗時(shí)操作。

二、Service生命周期

Android四大組件之Service詳解

1.startService / stopService

生命周期順序:onCreate->onStartCommand->onDestroy

OnCreate()

系統(tǒng)在service第一次創(chuàng)建時(shí)執(zhí)行此方法,來(lái)執(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()來(lái)停止服務(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來(lái)以使客戶端能夠使用它與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)鏈接

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI