android-service詳解(實(shí)用)

android-service詳解(實(shí)用)

ID:40747872

大?。?5.00 KB

頁(yè)數(shù):13頁(yè)

時(shí)間:2019-08-07

android-service詳解(實(shí)用)_第1頁(yè)
android-service詳解(實(shí)用)_第2頁(yè)
android-service詳解(實(shí)用)_第3頁(yè)
android-service詳解(實(shí)用)_第4頁(yè)
android-service詳解(實(shí)用)_第5頁(yè)
資源描述:

《android-service詳解(實(shí)用)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、Android開(kāi)發(fā)四大組件---Service詳解  service可以在和多場(chǎng)合的應(yīng)用中使用,比如播放多媒體的時(shí)候用戶(hù)啟動(dòng)了其他Activity這個(gè)時(shí)候程序要在后臺(tái)繼續(xù)播放,比如檢測(cè)SD卡上文件的變化,再或者在后臺(tái)記錄你地理信息位置的改變等等,總之服務(wù)嘛,總是藏在后頭的。  Service是在一段不定的時(shí)間運(yùn)行在后臺(tái),不和用戶(hù)交互應(yīng)用組件。每個(gè)Service必須在manifest中通過(guò)來(lái)聲明。可以通過(guò)contect.startservice和contect.bindserverice來(lái)啟動(dòng)。  Service和其他的應(yīng)用組件一樣,

2、運(yùn)行在進(jìn)程的主線(xiàn)程中。這就是說(shuō)如果service需要很多耗時(shí)或者阻塞的操作,需要在其子線(xiàn)程中實(shí)現(xiàn)。  service的兩種模式(startService()/bindService()不是完全分離的):  本地服務(wù)LocalService用于應(yīng)用程序內(nèi)部?! ∷梢詥?dòng)并運(yùn)行,直至有人停止了它或它自己停止。在這種方式下,它以調(diào)用Context.startService()啟動(dòng),而以調(diào)用Context.stopService()結(jié)束。它可以調(diào)用Service.stopSelf()或Service.stopSelfResult()來(lái)自己停止。不論調(diào)用了多

3、少次startService()方法,你只需要調(diào)用一次stopService()來(lái)停止服務(wù)?! ∮糜趯?shí)現(xiàn)應(yīng)用程序自己的一些耗時(shí)任務(wù),比如查詢(xún)升級(jí)信息,并不占用應(yīng)用程序比如Activity所屬線(xiàn)程,而是單開(kāi)線(xiàn)程后臺(tái)執(zhí)行,這樣用戶(hù)體驗(yàn)比較好。  遠(yuǎn)程服務(wù)RemoteService用于android系統(tǒng)內(nèi)部的應(yīng)用程序之間。  它可以通過(guò)自己定義并暴露出來(lái)的接口進(jìn)行程序操作??蛻?hù)端建立一個(gè)到服務(wù)對(duì)象的連接,并通過(guò)那個(gè)連接來(lái)調(diào)用服務(wù)。連接以調(diào)用Context.bindService()方法建立,以調(diào)用Context.unbindService()關(guān)閉。多個(gè)客戶(hù)

4、端可以綁定至同一個(gè)服務(wù)。如果服務(wù)此時(shí)還沒(méi)有加載,bindService()會(huì)先加載它。  可被其他應(yīng)用程序復(fù)用,比如天氣預(yù)報(bào)服務(wù),其他應(yīng)用程序不需要再寫(xiě)這樣的服務(wù),調(diào)用已有的即可?! ∩芷凇 ∈褂胏ontext.startService()啟動(dòng)Service是會(huì)會(huì)經(jīng)歷:  context.startService()->onCreate()->onStart()->Servicerunning  context.stopService()

5、->onDestroy()->Servicestop  如果Service還沒(méi)有運(yùn)行,則android先調(diào)用

6、onCreate()然后調(diào)用onStart();如果Service已經(jīng)運(yùn)行,則只調(diào)用onStart(),所以一個(gè)Service的onStart方法可能會(huì)重復(fù)調(diào)用多次。  stopService的時(shí)候直接onDestroy,如果是調(diào)用者自己直接退出而沒(méi)有調(diào)用stopService的話(huà),Service會(huì)一直在后臺(tái)運(yùn)行。該Service的調(diào)用者再啟動(dòng)起來(lái)后可以通過(guò)stopService關(guān)閉Service?! ∷哉{(diào)用startService的生命周期為:onCreate-->onStart(可多次調(diào)用)-->onDestroy  使用使用context.b

7、indService()啟動(dòng)Service會(huì)經(jīng)歷:  context.bindService()->onCreate()->onBind()->Servicerunning  onUnbind()->onDestroy()->Servicestop  onBind將返回給客戶(hù)端一個(gè)IBind接口實(shí)例,IBind允許客戶(hù)端回調(diào)服務(wù)的方法,比如得到Service運(yùn)行的狀態(tài)或其他操作。這個(gè)時(shí)候把調(diào)用者(Context,例如Activity)會(huì)和Service綁定在一起,Context退出了,Srevice就會(huì)調(diào)用onUnbind->onDestroy相應(yīng)退

8、出。  所以調(diào)用bindService的生命周期為:onCreate-->onBind(只一次,不可多次綁定)-->onUnbind-->onDestory?! ≡赟ervice每一次的開(kāi)啟關(guān)閉過(guò)程中,只有onStart可被多次調(diào)用(通過(guò)多次startService調(diào)用),其他onCreate,onBind,onUnbind,onDestory在一個(gè)生命周期中只能被調(diào)用一次?! 《鴨?dòng)service,根據(jù)onStartCommand的返回值不同,有兩個(gè)附加的模式:  1.START_STICKY用于顯示啟動(dòng)和停止service。  2.START_N

9、OT_STICKY或START_REDELIVER_INTENT用于有命令需要處理時(shí)才運(yùn)行的模式?! 》?wù)不

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。