AIDL的實現和注意點

AIDL的目的是:可以將業務型應用的功能通過aidl的方式開放給其他應用實現,比如支付寶的支付功能,給淘寶用。


一:根據需求,生成一個aidl接口的jar包,生成jar包,為了避免需求方和公司定義的aidl不統一,而且只要維護這個jar包就行了


1,創建一個android工程,定義aidl工程

2,aidl接口定義,必須在xx.xx.xx.aidl的package下面


接口定義

3,如果返回值有自定義類型的,自定義數據類也要放在xx.xx.xx.aidl的package下面,并且要定義一個自定義類型接口的aidl,同時自定義數據類型要實現Parcelable。另外返回自定義數據類的接口,記得import該數據類。


自定義數據類的aidl


自定義數據類實現Parelable


返回自定義類的接口,記得import

4、生成jar包,將改android工程勾上 is library 變成依賴工程,然后讓其他工程依賴他,編譯被依賴工程的時候就會在該依賴工程的bin下面生成可用的jar包,然后給客戶端和服務端的aidl工程使用;


該工程為依賴工程


二:aidl客戶端和服務端的實現

1、客戶端要定義ServiceConnection

public ISystemManager mISystemManager;//aidl接口

ServiceConnection

2、然后通過bingdService連接上上去

context.bindService(explicitIntent,serviceConn, Context.BIND_AUTO_CREATE);

3,客戶端調用aidl接口,具體功能,服務端實現

調用用aidl接口

服務端定義一個setvice,onBind返回實現接口stub的類

@Override

publicIBinder onBind(Intentintent) {

mISystemManagerService=this;

returnnewISystemManagerStub();

}


繼承aidl接口的stub

到此客戶端調用接口,服務端這邊實現接口的流程就結束了。

三:AIDL監聽器的實現

有的時候,aidl接口中還有一些監聽器,比如卸載的回調等,思路是客戶端實現監聽aidl的stub,服務端傳遞參數回調回去。

監聽器aidl的定義和在其他aidl接口中的位置:

定義監聽器aidl接口和普通的aidl接口一樣

監聽器aidl接口
監聽器aidl類在其他aidl類中,做入參操作

服務端有監聽器實現:

獲取到客戶端傳來的監聽器對象,然后調用監聽aidl的接口方法,將值傳遞回去

服務端傳遞參數


客戶端監聽器實現

客戶端監聽器的實現

注意點:

下面是AIDL能支持的數據類型:入參和出參;

Java編程語言的主要類型(int, boolean等)—不需要import語句。

以下的類(不需要import語句):

String

List-列表中的所有元素必須是在此列出的類型,包括其他AIDL生成的接口和可打包類型。List可以像一般的類(例如List)那樣使用,另一邊接收的具體類一般是一個ArrayList,這些方法會使用List接口。

Map- Map中的所有元素必須是在此列出的類型,包括其他AIDL生成的接口和可打包類型。一般的maps(例如Map)不被支持,另一邊接收的具體類一般是一個HashMap,這些方法會使用Map接口。

CharSequence-該類是被TextView和其他控件對象使用的字符序列。

通常引引用方式傳遞的其他AIDL生成的接口,必須要import語句聲明

實現了Parcelable protocol以及按值傳遞的自定義類,必須要import語句聲明。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,274評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,953評論 6 342
  • 當老師是我一直以來的夢想。 一直以來,都在為完成它而努力。大學選的師范專業,讀研也是因為本科學校的文憑給我的選擇余...
    向小萍閱讀 1,121評論 2 3
  • 鄒曉一個人蜷縮在小巷的角落,她緊緊靠著一個廢棄的鐵桶,鐵桶散發出陣陣惡臭,似乎真的是很久很久無人問津了。鄒曉顧不得...
    枚橙roro閱讀 256評論 0 2