




版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 4329-2022農(nóng)村(社區(qū))聚餐點建設(shè)服務(wù)規(guī)范
- DB32/T 4155.3-2021全民健康信息平臺共享數(shù)據(jù)集規(guī)范第3部分:老年保健管理
- DB32/T 4007-2021腫瘤高通量基因測序技術(shù)規(guī)范
- DB32/T 3826-2020公務(wù)用車信息化平臺數(shù)據(jù)交換技術(shù)規(guī)范
- DB32/T 3767-2020“空巴通”旅客聯(lián)程聯(lián)運服務(wù)規(guī)范
- DB32/T 3730-2020福利彩票星級銷售點評定規(guī)范
- DB32/T 3638-2019“多表合一”信息采集數(shù)據(jù)傳輸和轉(zhuǎn)換技術(shù)規(guī)范
- DB32/T 3566-2019瀝青路面改性瀝青SBS改性劑含量檢測技術(shù)規(guī)程
- DB32/T 3397-2018地面數(shù)字電視機頂盒技術(shù)規(guī)范
- DB31/T 974-2020公共汽(電)車車載信息系統(tǒng)一體化基本技術(shù)要求
- DB4211T12-2022醫(yī)療廢物暫存間衛(wèi)生管理規(guī)范
- 第二講公文語言及結(jié)構(gòu)(1語言)分析課件
- 氯氧鉍光催化劑的晶體結(jié)構(gòu)
- 低壓電氣裝置的設(shè)計安裝和檢驗第三版
- 國際商務(wù)管理超星爾雅滿分答案
- 監(jiān)理人員考勤表
- 克麗緹娜直銷獎金制度
- 基本醫(yī)療保險參保人員丟失醫(yī)療費用票據(jù)補支申請
- 高血壓病人的護理(PPT)
- DB11-T 825-2021綠色建筑評價標準
- 4例先天性高胰島素血癥患兒的護理
評論
0/150
提交評論