版權(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ù)】AndroidAIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式
通過(guò)AIDL接口在進(jìn)程間傳遞數(shù)據(jù),記錄在開(kāi)發(fā)中遇到的一寫(xiě)問(wèn)題AIDL支持?jǐn)?shù)據(jù)類型如下:1.Java的原生類型2.String和CharSequence3.List和Map,List和Map對(duì)象的元素必須是AIDL支持的數(shù)據(jù)類型;以上三種類型都不需要導(dǎo)入(import)4.AIDL自動(dòng)生成的接口需要導(dǎo)入(import)5.實(shí)現(xiàn)android.os.Parcelable接口的類.需要導(dǎo)入(import)。問(wèn)題1在傳遞非基礎(chǔ)數(shù)據(jù)時(shí)在參數(shù)前需加修飾符這里重點(diǎn)是in、out、inout修飾符以及Parcelable的使用!常見(jiàn)的是in、Parcelable,少用的out、inout。這幾種修飾符,可理解如下:in:客戶端的參數(shù)輸入;out:服務(wù)端的參數(shù)輸入;inout:這個(gè)可以叫輸入輸出參數(shù),客戶端可輸入、服務(wù)端也可輸入??蛻舳溯斎肓藚?shù)到服務(wù)端后,服務(wù)端也可對(duì)該參數(shù)進(jìn)行修改等,最后在客戶端上得到的是服務(wù)端輸出的參數(shù)。問(wèn)題2傳遞對(duì)象時(shí)的必要操作1.必需實(shí)現(xiàn)Parcelable接口,內(nèi)部類必需為靜態(tài)內(nèi)部類2.需在aidl目錄創(chuàng)建同類名的AIDL文件,并聲明Parcelable,如圖AIDL文件代碼就兩行問(wèn)題3參數(shù)大小的限制如上在傳遞byte[]長(zhǎng)度大于1024*1024時(shí)會(huì)拋出TransactionTooLargeException異常問(wèn)題4實(shí)現(xiàn)與服務(wù)之間互相調(diào)用1.在綁定服務(wù)時(shí)會(huì)返回一個(gè)實(shí)現(xiàn)了AIDL的對(duì)象,這樣可以通過(guò)對(duì)象調(diào)用服務(wù)中對(duì)應(yīng)實(shí)現(xiàn),2.可以在應(yīng)用層實(shí)現(xiàn)一個(gè)AIDL接口的對(duì)象,通過(guò)綁定服務(wù)返回的AIDL對(duì)象回傳給服務(wù),這樣可以在服務(wù)中主動(dòng)調(diào)用應(yīng)用層的方法實(shí)現(xiàn)數(shù)據(jù)回傳通知,補(bǔ)充知識(shí):在Android系統(tǒng)中實(shí)現(xiàn)AIDL功能之前實(shí)現(xiàn)AIDL的功能都是通過(guò)eclipse或者androidstudio工具實(shí)現(xiàn),最近由于項(xiàng)目需要,需要系統(tǒng)層提供接口給應(yīng)用層使用,所以想到使用AIDL。下面已一個(gè)非常簡(jiǎn)單的Demo來(lái)說(shuō)明在Android系統(tǒng)平臺(tái)生成AIDL的jar供應(yīng)用層使用。一、AIDL的jar制作首先新建一個(gè)android項(xiàng)目來(lái)用生產(chǎn)aidl的jar包,項(xiàng)目結(jié)構(gòu)如下:只有三個(gè)文件,首先看一下IVoiceClientInterface.aidl文件:里面只有一個(gè)簡(jiǎn)單的方法face。IVoiceClientInterface.aidl主要是服務(wù)器端來(lái)實(shí)現(xiàn)的,而VoiceManager.java是供客戶端調(diào)用face方法使用的。VoiceManager.java具體實(shí)現(xiàn)如下:
Android.mk文件主要是用來(lái)將IVoiceClientInterface.aidl和VoiceManager.java編譯成jar包,以方便在eclipse或者AndroidStudio中使用。
將該項(xiàng)目放置到android系統(tǒng)的packages/apps目錄單編就可以生產(chǎn)out/target/common/obj/JAVA_LIBRARIES/SimpleJar_intermediates/classes.jar,classes.jar就可以導(dǎo)入eclipse或者AndroidStudio中使用。二、服務(wù)端實(shí)現(xiàn)AIDL中的接口demo目錄結(jié)構(gòu)如下:
gunder@gunder:/mnt/hgfs/ubuntuShare/aidl/SimpleJarService$tree
.
├──AndroidManifest.xml
├──Android.mk
├──libs
│└──simple.jar
├──res
│├──drawable-hdpi
││└──ic_launcher.png
│├──drawable-ldpi
│├──drawable-mdpi
││└──ic_launcher.png
│├──drawable-xhdpi
││└──ic_launcher.png
│├──layout
│├──values
││├──strings.xml
││└──styles.xml
│├──values-v11
││└──styles.xml
│└──values-v14
│└──styles.xml
└──src
└──com
└──china
└──service
├──BootReceiverBroadcast.java
├──Logger.java
└──SimpleService.java
gunder@gunder:/mnt/hgfs/ubuntuShare/aidl/SimpleJarService$tree
.
├──AndroidManifest.xml
├──Android.mk
├──libs
│└──simple.jar
├──res
│├──drawable-hdpi
││└──ic_launcher.png
│├──drawable-ldpi
│├──drawable-mdpi
││└──ic_launcher.png
│├──drawable-xhdpi
││└──ic_launcher.png
│├──layout
│├──values
││├──strings.xml
││└──styles.xml
│├──values-v11
││└──styles.xml
│└──values-v14
│└──styles.xml
└──src
└──com
└──china
└──service
├──BootReceiverBroadcast.java
├──Logger.java
└──SimpleService.java
主要實(shí)現(xiàn)只有5個(gè)文件:SimpleService.java、Logger.java、BootReceiverBroadcast.java、Android.mk、AndroidManifest.xml。SimpleService.java是實(shí)現(xiàn)AIDL的服務(wù),具體實(shí)現(xiàn)如下:
Logger.java是打印Log的簡(jiǎn)單封裝,具體如下:BootReceiverBroadcast.java是開(kāi)機(jī)完成的時(shí)候拉起SimpleService服務(wù),具體實(shí)現(xiàn)如下:Android.mk具體實(shí)現(xiàn)如下:這里的simple.jar是第一步中制作的classes.jar。AndroidManifest.xml配置文件如下:到這里服務(wù)端就實(shí)現(xiàn)完了。三、客戶端實(shí)現(xiàn)AIDL的接口調(diào)用demo目錄結(jié)構(gòu)如下:
gunder@gunder:/mnt/hgfs/ubuntuShare/aidl/SimpleJarClient$tree
.
├──AndroidManifest.xml
├──Android.mk
├──libs
│└──simple.jar
├──res
│├──drawable-hdpi
││└──ic_launcher.png
│├──drawable-ldpi
│├──drawable-mdpi
││└──ic_launcher.png
│├──drawable-xhdpi
││└──ic_launcher.png
│├──drawable-xxhdpi
││└──ic_launcher.png
│├──layout
││├──activity_main.xml
││├──activity_tss.xml
││└──test.xml
│├──menu
│├──values
││├──dimens.xml
││└──strings.xml
│├──values-v11
│├──values-v14
│└──values-w820dp
│└──dimens.xml
└──src
└──com
└──example
└──helloworld
├──TestVoice.java
└──util
└──Logger.java
gunder@gunder:/mnt/hgfs/ubuntuShare/aidl/SimpleJarClient$tree
.
├──AndroidManifest.xml
├──Android.mk
├──libs
│└──simple.jar
├──res
│├──drawable-hdpi
││└──ic_launcher.png
│├──drawable-ldpi
│├──drawable-mdpi
││└──ic_launcher.png
│├──drawable-xhdpi
││└──ic_launcher.png
│├──drawable-xxhdpi
││└──ic_launcher.png
│├──layout
││├──activity_main.xml
││├──activity_tss.xml
││└──test.xml
│├──menu
│├──values
││├──dimens.xml
││└──strings.xml
│├──values-v11
│├──values-v14
│└──values-w820dp
│└──dimens.xml
└──src
└──com
└──example
└──helloworld
├──TestVoice.java
└──util
└──Logger.java這里主要看5個(gè)文件:Logger.java、test.
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年會(huì)展現(xiàn)場(chǎng)服務(wù)標(biāo)準(zhǔn)化指南
- 2026湖南邵陽(yáng)市邵陽(yáng)縣不動(dòng)產(chǎn)登記中心和邵陽(yáng)縣土地房屋征收服務(wù)中心選調(diào)4人備考題庫(kù)完整答案詳解
- 果園安全生產(chǎn)與防護(hù)手冊(cè)
- 2026浙江嘉興海寧市遠(yuǎn)達(dá)教育集團(tuán)招聘?jìng)淇碱}庫(kù)(十)及一套完整答案詳解
- 2026甘肅酒泉金塔縣鑫耀人力資源管理有限公司招聘相關(guān)技術(shù)人員的4人備考題庫(kù)有答案詳解
- 2026河南省直機(jī)關(guān)遴選公務(wù)員159人備考題庫(kù)完整答案詳解
- 2026年漁業(yè)資源增殖放流實(shí)務(wù)指南
- 職業(yè)噪聲暴露的流行病學(xué)特征與防控策略
- 空調(diào)店銷售年終總結(jié)(3篇)
- 職業(yè)共病管理中的學(xué)術(shù)交流平臺(tái)
- 基建人員考核管理辦法
- 2025體育與健康課程標(biāo)準(zhǔn)深度解讀與教學(xué)實(shí)踐
- 礦山救援器材管理制度
- 2025西南民族大學(xué)輔導(dǎo)員考試試題及答案
- T/CSPSTC 17-2018企業(yè)安全生產(chǎn)雙重預(yù)防機(jī)制建設(shè)規(guī)范
- 2025年《三級(jí)物業(yè)管理師》考試復(fù)習(xí)題(含答案)
- 《數(shù)據(jù)與管理》課件
- 2025屆北京市西城區(qū)北京四中高考英語(yǔ)二模試卷含答案
- 面神經(jīng)炎美國(guó)神經(jīng)病學(xué)會(huì)和美國(guó)耳鼻喉-頭頸外科學(xué)會(huì)治療
- 鍋爐煤場(chǎng)安全管理制度
- DB11∕T1135-2024供熱系統(tǒng)有限空間作業(yè)安全技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論