什么是AIDL捞烟?
AIDL是 Android Interface definition language的縮寫当船,一看就明白题画,它是一種android內(nèi)部進程通信接口的描述語言德频,通過它我們可以定義進程間的通信接口
AIDL的作用
AIDL可以實現(xiàn)跨進程的方法調(diào)用苍息。定義進程通信接口供服務(wù)端和客戶端調(diào)用壹置。
AIDL支持的參數(shù)類型
在AIDL文件中并不是所有數(shù)據(jù)類型都可以使用竞思。只支持下列數(shù)據(jù)類型
- 基本數(shù)據(jù)類型(int, long, char, boolean, double等)钞护;
- String和CharSequeence;
- List:只支持ArrayList盖喷,且List里的元素必須在aidl中被定義难咕;
- Map:只支持HashMap课梳,里面每個元素必須被AIDL支持步藕,包括Key和Value惦界;
- Parcelable:所有實現(xiàn)了Parcelable接口的對象咙冗;
- AIDL:所有AIDL接口本身可以在AIDL文件中使用沾歪;
自定義Parcelable對象和AIDL對象必須手動import雾消。
如果AIDL文件用到了自定義Parcelable對象,必須新建一個同名的AIDL文件
AIDL的調(diào)用過程
默認情況下AIDL的調(diào)用過程是同步的立润,所以不能直接進行比較耗時的操作狂窑,否則容易導(dǎo)致客戶端ANR桑腮。如果需要進行異步操作泉哈,在服務(wù)端不需要另起線程,但是在客戶端需要另起線程訪問遠程方法丛晦,再通過Handler通知到UI線程即可!