服務(wù)service- remote service

服務(wù)service- remote service

ID:9956266

大小:179.50 KB

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

時(shí)間:2018-05-16

服務(wù)service- remote service_第1頁(yè)
服務(wù)service- remote service_第2頁(yè)
服務(wù)service- remote service_第3頁(yè)
服務(wù)service- remote service_第4頁(yè)
服務(wù)service- remote service_第5頁(yè)
資源描述:

《服務(wù)service- remote service》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、服務(wù)Service-RemoteService分類(lèi):Andriod2012-09-2909:36572人閱讀評(píng)論(1)收藏舉報(bào)之前所談的Service屬于LocalService,即Service和Client在同一進(jìn)程內(nèi)(即同一application內(nèi)),Service的生命周期服從進(jìn)程的生命周期。在實(shí)際應(yīng)用上,有時(shí)希望Service作為后臺(tái)服務(wù),不僅被同一進(jìn)程內(nèi)的activity使用,也可被其他進(jìn)程所使用,針對(duì)這種情況,需要采用bindService,也就是RemoteService的方式。在A

2、ndroid中,不同app屬不同進(jìn)程(process),進(jìn)程是安全策略的邊界,一個(gè)進(jìn)程不能訪問(wèn)其他進(jìn)程的存儲(chǔ)(例如采用ContentProvider)。在RemoteService中將涉及進(jìn)程間通信,也就是通常講的IPC(interprocesscommnication),需要在進(jìn)程A和進(jìn)程B之間建立連接,以便進(jìn)行相互的通信或數(shù)據(jù)傳遞。Android提供AIDL(AndroidInterfaceDefinitionLanguage)工具幫助IPC之間接口的建立,大大地簡(jiǎn)化了開(kāi)發(fā)者視圖。右示意圖僅用于

3、幫助理解代碼。通過(guò)下面的步驟實(shí)現(xiàn)client和service之間的通信:【1】定義AIDL接口,Eclipse將自動(dòng)為Service建立接口IService【2】Client連接Service,連接到IService暴露給Client的Stub,獲得stub對(duì)象;換句話,Service通過(guò)接口中的Stub向client提供服務(wù),在IService中對(duì)抽象IService.Stub具體實(shí)現(xiàn)。?【3】Client和Service連接后,Client可向使用本地方法那樣,簡(jiǎn)單地直接調(diào)用IService.S

4、tub里面的方法。下面的例子給出client從提供定時(shí)計(jì)數(shù)的RemoteService,稱為T(mén)estRemoteService,中獲得服務(wù)的例子。步驟1:通過(guò)AIDL文件定義Service向client提供的接口,ITestRemoteService.aidl文件如下packagecom.wei.android.learning.part5;interfaceITestRemoteService{???intgetCounter();}我們?cè)趕rc的目錄下添加一個(gè)I

5、>.aidl文件,語(yǔ)法和java的相同。在這個(gè)例子中Service很簡(jiǎn)單,只提供計(jì)數(shù)器的值,故在接口中我們定義了intgetCounter()。AIDL文件很簡(jiǎn)單,Eclipse會(huì)根據(jù)文件自動(dòng)生成相關(guān)的一個(gè)javainterface文件,不過(guò)沒(méi)有顯示出來(lái),如果直接使用命令行工具會(huì)幫助生成java文件。步驟2:RemoteService的編寫(xiě),通過(guò)onBind(),在client連接時(shí),傳遞stub對(duì)象。TestRemoteService.java文件如下:/*Service提供一個(gè)定時(shí)計(jì)數(shù)器,采用R

6、unnable的方式實(shí)現(xiàn),復(fù)習(xí)一下Android學(xué)習(xí)筆記(三一):線程:Message和Runnable中的例子3。為了避免干擾注意力,灰掉這部分代碼。此外,我們提供showInfo(),用于跟蹤Service的運(yùn)行情況,這部分也灰掉。*/publicclassTestRemoteServiceextendsService{???privateHandlerserviceHandler=null;???privateintcounter=0;???privateTestCounterTaskmyTa

7、sk=newTestCounterTask();????????publicvoidonCreate(){????????super.onCreate();???????showInfo("remoteserviceonCreate()");???}????publicvoidonDestroy(){???????super.onDestroy();???????serviceHandler.removeCallbacks(myTask);?//停止計(jì)數(shù)器???????serviceHandler=

8、null;???????showInfo("remoteserviceonDestroy()");???}????publicvoidonStart(Intentintent,intstartId){??????//開(kāi)啟計(jì)數(shù)器???????super.onStart(intent,startId);???????serviceHandler=newHandler();???????serviceHandler.postDelayed(myTask,1000);????

當(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. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(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)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。