AIDL
AIDL是一种android接口定义语言,主要是为了完成进程间通讯,尤其实在涉及多进程并发情况下的进程间通讯。
AIDL可以实现进程间的通讯,比如B进程有一个加法运算的功能,A进程需要这个功能,A进程产生两个数字,把数字传给B进程,B进程计算后把结果返回给A。
AIDL支持Java的基本8数据类型。list和map。其他AIDL生成的接口。实现Parcelable的实体。
AIDL实现进程通讯的步骤:
服务端:
1.创建一个实体类,实现Parcelable接口并序列化。
2.创建aidl文件和 创建一个aidl文件,在此文件中写入需要通讯的方法,创建实体类的映射aidl文件,在此文件中声明Parcelable的数据类型。通过make project 生成onBind文件
3.创建一个服务,服务中生成onBind文件的实例,并实现我们创建的aidl接口文件中的方法,在方法中写入我们的功能。在onBind方法中返回我们刚生成的onBind文件
客户端
4.把服务端的aidl文件和实体类copy到客户端,用bindservice绑定服务,实现serviceconnection接口,在serviceconnection中创建onbind文件的实例,通过该实例就可以调用aidl类中定义好的接口请求。
进程通讯方式除了AIDL,还有BroadcastReceiver:广播接受者,它占用的系统资源比较多,所以不适合频繁的跨进程通讯,Messager跨进程通讯是同步进行的,无法并发执行,所以在要求多进程的情况下不实用。