AIDL 的定义
AIDL,即Android Interface Definition Language,Android接口定义语言。这门语言是为了实现进程间通信。每一个进程都有自己的一块独立的内存,都在自己的内存上存储自己的数据,执行自己的操作,每个进程之间你不知我,我不知你,而AIDL,就是两个进程之间沟通的桥梁。
aidl用来做什么
AIDL是Android中IPC(Inter-Process Communication)方式中的一种,AIDL是Android Interface definition language的缩写,对于小白来说,AIDL的作用是让你可以在自己的APP里绑定一个其他APP的service,这样你的APP可以和其他APP交互。
aidl文件支持的数据类型
1、八种基本数据类型:byte、char、short、int、long、float、double、boolean,
2、String、CharSequence
3、实现了Parcelable接口的数据类型
4、List类型。List承载的数据必须是AIDL支持的类型,或者是其他声明的AIDL对象
5、Map类型。Map承载的数据必须是AIDL支持的类型,或者是其他声明的AIDL对象
在使用其他声明的AIDL对象的时候必须要导包,即使要使用的AIDL对象文件和当前正在编辑的aidl文件在同一个文件夹下
参数定向TAG
所有的非基本参数都需要一个定向 tag 来指出数据的流向,不管是 in , out , 还是 inout 。基本参数的定向 tag 默认是并且只能是 in
in、out、inout称为AIDL接口方法参数的定向tag,代表着数据的流向。
in:服务端收到对象后对此对象做任何修改都不会同步给客户端。
out:无论客户端传过去的对象有没有提前设置值,在Binder传输过程中都会new一个空对象传递给服务端,服务端接收到的对象后对此对象所做的修改都会同步给客户端。
inout:服务端接受对象后,无论是客户端还是服务端对此对象所做的修改都会两端同步。
基本类型的参数只能是in。
aidl文件分类
aidl文件可以分为两类,一类用来声明实现了Parcelable接口的数据类型,以供其他AIDL文件使用那些非默认支持的数据类型。还有一类是用来定义接口方法,声明要暴露哪些接口给客户端调用。
demo 链接添加链接描述