下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】AndroidService的生命周期2
有了Service類我們?nèi)绾螁?dòng)他呢,有兩種方法:
Context.startService()
Context.bindService()
1.
在同一個(gè)應(yīng)用任何地方調(diào)用startService()方法就能啟動(dòng)Service了,然后系統(tǒng)會(huì)回調(diào)Service類的onCreate()以及onStart()方法。這樣啟動(dòng)的Service會(huì)一直運(yùn)行在后臺(tái),直到Context.stopService()或者selfStop()方法被調(diào)用。另外如果一個(gè)Service已經(jīng)被啟動(dòng),其他代碼再試圖調(diào)用startService()方法,是不會(huì)執(zhí)行onCreate()的,但會(huì)重新執(zhí)行一次onStart()。
2.另外一種bindService()方法的意思是,把這個(gè)Service和調(diào)用Service的客戶類綁起來(lái),如果調(diào)用這個(gè)客戶類被銷毀,Service也會(huì)被銷毀。用這個(gè)方法的一個(gè)好處是,bindService()方法執(zhí)行后Service會(huì)回調(diào)上邊提到的onBind()方發(fā),你可以從這里返回一個(gè)實(shí)現(xiàn)了IBind接口的類,在客戶端操作這個(gè)類就能和這個(gè)服務(wù)通信了,比如得到Service運(yùn)行的狀態(tài)或其他操作。如果Service還沒(méi)有運(yùn)行,使用這個(gè)方法啟動(dòng)Service就會(huì)onCreate()方法而不會(huì)調(diào)用onStart()。
總結(jié):
1.startService()的目的是回調(diào)onStart()方法,onCreate()方法是在Service不存在的時(shí)候調(diào)用的,如果Service存在(例如之前調(diào)用了bindService,那么Service的onCreate方法已經(jīng)調(diào)用了)那么startService()將跳過(guò)onCreate()方法。
2.
bindService()目的是回調(diào)onBind()方法,它的作用是在Service和調(diào)用者之間建立一個(gè)橋梁,并不負(fù)責(zé)更多的工作(例如一個(gè)Service需要連接服務(wù)器的操作),一般使用bindService來(lái)綁定到一個(gè)現(xiàn)有的Service(即通過(guò)StartService啟動(dòng)的服務(wù))。
由于Service的onStart()方法只有在startService()啟動(dòng)Service的情況下才調(diào)用,故使用onStart()的時(shí)候要注意這點(diǎn)。
如果我們想保持和Service的通信,又不想讓Service隨著Activity退出而退出呢?你可以先startService()然后再bindService()。當(dāng)你不需要綁定的時(shí)候就執(zhí)行unbindService()方法,執(zhí)行這個(gè)方法只會(huì)觸發(fā)Service的onUnbind()而不會(huì)把這個(gè)Service銷毀。這樣就可以既保持和Service的通信,也不會(huì)隨著Activity銷毀而銷毀了。
Android系統(tǒng)對(duì)于內(nèi)存管理有自己的一套方法,為了保障系統(tǒng)有序穩(wěn)定的運(yùn)信,系統(tǒng)內(nèi)部會(huì)自動(dòng)分配,控制程序的內(nèi)存使用。當(dāng)系統(tǒng)覺(jué)得當(dāng)前的資源非常有限的時(shí)候,為了保證一些優(yōu)先級(jí)高的程序能運(yùn)行,就會(huì)殺掉一些他認(rèn)為不重要的程序或者服務(wù)來(lái)釋放內(nèi)存。這樣就能保證真正對(duì)用戶有用的程序仍然再運(yùn)行。如果你的Service碰上了這種情況,多半會(huì)先被殺掉。但如果你增加Service的優(yōu)先級(jí)就能讓他多留一會(huì),我們可以用setForeground(true)來(lái)設(shè)置Service的優(yōu)先級(jí)。
為什么是foreground?默認(rèn)啟動(dòng)的Service是被標(biāo)記為background,當(dāng)前運(yùn)行的Activity一般被標(biāo)記為foreground,也就是說(shuō)你給Service設(shè)置了foreground那么他就和正在運(yùn)行的Activity類似優(yōu)先級(jí)得到了一定的提高。當(dāng)讓這并不能保證你得Service永遠(yuǎn)不被殺掉,只是提高了他的優(yōu)先級(jí)。
摘自網(wǎng)絡(luò)其他資料:關(guān)于Service生命周AndroidService生命周期與Activity生命周期是相似的,但是也存在一些細(xì)節(jié)上也存在著重要的不同:onCreate和onStart是不同的通過(guò)從客戶端調(diào)用Context.startService(Intent)方法我們可以啟動(dòng)一個(gè)服務(wù)。如果這個(gè)服務(wù)還沒(méi)有運(yùn)行,Android將啟動(dòng)它并且在onCreate方法之后調(diào)用它的onStart方法。如果這個(gè)服務(wù)已經(jīng)在運(yùn)行,那么它的onStart方法將被新的Intent再次調(diào)用。所以對(duì)于單個(gè)運(yùn)行的Service它的onStart方法被反復(fù)調(diào)用是完全可能的并且是很正常的。onResume、onPause以及onStop是不需要的回調(diào)一個(gè)服務(wù)通常是沒(méi)有用戶界面的,所以我們也就不需要onPause、onResume或者onStop方法了。無(wú)論何時(shí)一個(gè)運(yùn)行中的Service它總是在后臺(tái)運(yùn)行。onBind如果一個(gè)客戶端需要持久的連接到一個(gè)服務(wù),那么他可以調(diào)用Context.bindService方法。如果這個(gè)服務(wù)沒(méi)有運(yùn)行方法將通過(guò)調(diào)用onCreate方法去創(chuàng)建這個(gè)服務(wù)但并不調(diào)用onStart方法來(lái)啟動(dòng)它。相反,onBind方法將被客戶端的Intent調(diào)用,并且它返回一個(gè)IBind對(duì)象以便客戶端稍后可以調(diào)用這個(gè)服務(wù)。同一服務(wù)被客戶端同時(shí)啟動(dòng)和綁定是很正常的。onDestroy與Activity一樣,當(dāng)一個(gè)服務(wù)被結(jié)束是onDestroy方法將會(huì)被調(diào)用。當(dāng)沒(méi)有客戶端啟動(dòng)或綁定到一個(gè)服務(wù)時(shí)Android將
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市安全設(shè)施包工不包料施工管理協(xié)議3篇
- 2025年度戰(zhàn)略合作合同合作目標(biāo)與具體合作內(nèi)容3篇
- 二零二五年度城市基礎(chǔ)設(shè)施建設(shè)項(xiàng)目貸款合同6篇
- 課程設(shè)計(jì)區(qū)域標(biāo)志牌
- 綜合布線課程設(shè)計(jì)酒店
- 二零二五年度新型廠房出租安全管理合同2篇
- 2025年演講有創(chuàng)意的自我介紹(2篇)
- 2025年幼兒園中秋節(jié)演講稿例文(2篇)
- 軸承鍛造工藝課程設(shè)計(jì)
- 安全“零隱患”抵押責(zé)任制模版(2篇)
- 新課標(biāo)背景下的大單元教學(xué)研究:國(guó)內(nèi)外大單元教學(xué)發(fā)展與演進(jìn)綜述
- (正式版)HGT 4339-2024 機(jī)械設(shè)備用涂料
- 2024年醫(yī)療器械銷售總結(jié)
- 基于物聯(lián)網(wǎng)的支護(hù)機(jī)械遠(yuǎn)程監(jiān)控系統(tǒng)
- SLT278-2020水利水電工程水文計(jì)算規(guī)范
- 心靈養(yǎng)生的療愈之道
- 建筑設(shè)計(jì)公司的商業(yè)計(jì)劃書
- 人教版PEP六年級(jí)英語(yǔ)下冊(cè)課件unit1
- 人教版四年級(jí)數(shù)學(xué)上冊(cè)寒假每日一練
- 律師法律服務(wù)應(yīng)急預(yù)案
- 借款債務(wù)股東共同承擔(dān)協(xié)議
評(píng)論
0/150
提交評(píng)論