《Android移動應(yīng)用開發(fā)》Android接口定義語言_第1頁
《Android移動應(yīng)用開發(fā)》Android接口定義語言_第2頁
《Android移動應(yīng)用開發(fā)》Android接口定義語言_第3頁
《Android移動應(yīng)用開發(fā)》Android接口定義語言_第4頁
《Android移動應(yīng)用開發(fā)》Android接口定義語言_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

AIDL2024/1/29092024/1/29認識AIDL目錄CONTENT1使用AIDL2參考教材:《Android應(yīng)用開發(fā)項目化教程》認識AIDL源起在Android系統(tǒng)中,每個應(yīng)用程序都運行在自己的進程中,進程之間一般是無法直接進行數(shù)據(jù)交換的,而為了實現(xiàn)跨進程通信(IPC:InterprocessCommunication),Android提供了一種Binder機制,而這個機制使用的接口語言就是:AIDL。AIDL是處理多線程、多客戶端并發(fā)訪問的優(yōu)先選擇。1認識AIDL特征AIDL(AndroidInterfaceDefinitionLanguage)是一種IDL語言,用于生成可以在Android設(shè)備上兩個進程之間進行進程間通信的代碼。AIDLIPC機制是面向接口的,更加輕量級。這種接口語言并非真正的編程語言,只是定義兩個進程間的通信接口而已!而生成符合通信協(xié)議的Java代碼則是由AndroidSDK的platform-tools目錄下的aidl.exe工具生成,生成對應(yīng)的接口文件在gen目錄下,一般是:Xxx.java的接口!而在該接口中包含一個Stub的內(nèi)部類,該類中實現(xiàn)了在該類中實現(xiàn)了IBinder接口與自定義的通信接口,這個類將會作為遠程Service的回調(diào)類——實現(xiàn)了IBinder接口,所以可作為Service的onBind()方法的返回值!1使用AIDL使用AIDL實現(xiàn)IPC服務(wù)的步驟1.創(chuàng)建.aidl文件

該文件(YourInterface.aidl)定義了客戶端可用的方法和數(shù)據(jù)的接口。2.實現(xiàn)接口AIDL編譯器從AIDL接口文件中利用Java語言創(chuàng)建接口,該接口有一個繼承的命名為Stub的內(nèi)部抽象類(并且實現(xiàn)了一些IPC調(diào)用的附加方法),要做的就是創(chuàng)建一個繼承于YourInterface

.Stub的類并且實現(xiàn)在.aidl文件中聲明的方法。3.向客戶端公開接口如果是編寫服務(wù),應(yīng)該繼承Service并且重載Service.onBind(Intent)以返回實現(xiàn)了接口的對象實例2使用AIDL創(chuàng)建.aidl文件方法在AS的main目錄下新建一個aidl文件夾,然后定義一個和aidl包名相同的包,最后創(chuàng)建一個aidl文件,接著按ctrl+f9重新編譯。

2使用AIDL創(chuàng)建.aidl文件示例2使用AIDL實現(xiàn)接口編譯結(jié)果AIDL生成了與.aidl文件同名的接口。生成的接口包含一個名為Stub的抽象的內(nèi)部類,該類聲明了所有.aidl中描述的方法,Stub還定義了少量的輔助方法,尤其是asInterface(),通過它或以獲得IBinder(當applicationContext.bindService()成功調(diào)用時傳遞到客戶端的onServiceConnected())并且返回用于調(diào)用IPC方法的接口實例。2使用AIDL實現(xiàn)接口示例2使用AIDL向客戶端公開接口發(fā)布服務(wù)

繼承Service,然后實現(xiàn)以Service.onBind(Intent)返回一個實現(xiàn)了接口的類對象。2使用AIDL使用可打包接口傳遞參數(shù)基本步驟(Parcelable)實現(xiàn)Parcelabel接口。實現(xiàn)publicvoidwriteToParcel(Parcelout)方法,以便可以將對象的當前狀態(tài)寫入包裝對象中。增加名為CREATOR的構(gòu)造器到類中,并實現(xiàn)Parcelable.Creator接口。最后,但同樣重要的是,創(chuàng)建AIDL文件聲明這個可打包的類,如果使用的是自定義的編譯過程,那么不要編譯此AIDL文件,它像C語言的頭文件一樣不需要編譯。2使用AIDL使用可打包接口傳遞參數(shù)基本步驟(Parcelable)2使用AIDL調(diào)用IPC方法基本步驟聲明.aidl文件中定義的接口類型的變量。實現(xiàn)ServiceConnection調(diào)用Context.bindService(),傳遞ServiceConnection的實現(xiàn)在ServiceConnection.onServiceConnected()方法中會接收到IBinder對象,調(diào)用YourInterfaceName.Stub.asInterface((IBinder)service)將返回值轉(zhuǎn)換為YourInterf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論