【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android AIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式_第1頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android AIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式_第2頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android AIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式_第3頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android AIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式_第4頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android AIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論