什么是AIDL
AIDL (Android Interface Definition Language, Android接口定義語言)
在不同的進(jìn)程(應(yīng)用)之間進(jìn)行數(shù)據(jù)交換,就要約定 之間的通信接口。
從面向?qū)ο蟮慕嵌葋砜?,接口設(shè)計(jì)要考慮狀態(tài)和行為。一般來說,接口定義的內(nèi)容分為:
1.方法操作(描述行為)
2.參數(shù)(描述狀態(tài),數(shù)據(jù)的類型,數(shù)據(jù)的載體/實(shí)體)
AIDL是一種IDL,它有特有的語法描述。我們需要編寫一個(gè)AIDL文件作為約定。它的語法非常類似java語法。
它支持基礎(chǔ)數(shù)據(jù)類型,比如 int,String,float等。
它支持實(shí)體類,必須是實(shí)現(xiàn)了Parcelable接口,支持序列化。
AIDL通過服務(wù)綁定的方式來使用。你需要定義一個(gè)service,傳遞一個(gè) IBinder對(duì)象。這個(gè) IBinder對(duì)象具有我們需要的方法。
拿到這個(gè)對(duì)象后執(zhí)行具體方法。
AIDL分為 服務(wù)端和客戶端
服務(wù)端即服務(wù)提供著,提供可操作的方法和數(shù)據(jù)。
客戶端即調(diào)用者,使用方法和數(shù)據(jù)。
什么時(shí)候適合使用AIDL:
官方文檔建議只有你允許客戶端從不同的應(yīng)用程序?yàn)榱诉M(jìn)程間的通信而去訪問你的service,以及想在你的service處理多線程。