什么是AIDL?
AIDL是 Android Interface definition language的缩写,一看就明白,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口
AIDL的作用
AIDL可以实现跨进程的方法调用。定义进程通信接口供服务端和客户端调用。
AIDL支持的参数类型
在AIDL文件中并不是所有数据类型都可以使用。只支持下列数据类型
- 基本数据类型(int, long, char, boolean, double等);
- String和CharSequeence;
- List:只支持ArrayList,且List里的元素必须在aidl中被定义;
- Map:只支持HashMap,里面每个元素必须被AIDL支持,包括Key和Value;
- Parcelable:所有实现了Parcelable接口的对象;
- AIDL:所有AIDL接口本身可以在AIDL文件中使用;
自定义Parcelable对象和AIDL对象必须手动import。
如果AIDL文件用到了自定义Parcelable对象,必须新建一个同名的AIDL文件
AIDL的调用过程
默认情况下AIDL的调用过程是同步的,所以不能直接进行比较耗时的操作,否则容易导致客户端ANR。如果需要进行异步操作,在服务端不需要另起线程,但是在客户端需要另起线程访问远程方法,再通过Handler通知到UI线程即可!