AIDL构成:
服务端:
服务端创建一个service来监听客户端请求,然后创建一个AIDL文件,里面是要实现的方法,将暴露给客户端的接口在这个AIDL文件中声明,最后在service中实现这个AIDL接口。
客户端:
客户端需要绑定服务端service,绑定成功后,将服务端返回的Binder对象转成AIDL接口所属类型,接着就可以调用AIDL中的方法了。
AIDL接口创建:
创建一个后缀为AIDL的文件,在里面直接声明接口和方法。

注意:如果AIDL文件中用到自定义的Parcelable对象,那必须新建一个和他同名的AIDL文件,并在其中声明他的Parcelable类型。
服务端Service:
创建一个service,在里面创建一个binder对象并在onBind中返回他,这个对象继承创建的的AIDL文件并实现内部的方法(MyAidl().stub)

客户端实现:
绑定远程服务,绑定成功后将服务端返回的Binder对象转换成AIDL接口,然后通过这个接口去调用服务端的远程方法。

AIDL支持类型:
基本数据类型(int,long, char, boolean, double等)
String和CharSequence
List:只支持ArrayList,里面每个元素都必须能够被AIDL支持。
Map:只支持HashMap,里面的每个元素都必须被AIDL支持,包括key和value。
Parcelable:所有实现了Parcelable接口的对象。
AIDL:所有AIDL接口本身也可以在AIDL文件中使用