AIDL相关知识:
1、AIDL是什么?
AIDL(Android接口定义语言)是Android提供的一种进程间通信(IPC)机制。
在Android上,一个进程通常无法访问另一个进程的内存。因此需要使用AIDL来处理。
2、AIDL支持的数据类型?
一共支持4种数据类型:
①Java的基本数据类型
②Liat和Map
a.元素必须是AIDL支持的数据类型
b.Server端具体的类里必须是ArrayList或者HashMap
③其他AIDL生成的接口
④其他Parcelable的实体
3、AIDL如何编写?
①创建AIDL
a.创建要操作的实现类,实现Parcelable接口,以便序列化/反序列化
b.新建aidl文件夹,在其中创建接口aidl文件以及实体类的映射aidl文件
c.make Project,生成Binder的Java文件
②服务端
a.创建Service,在其中创建上面生成的Binder对象实例,实现接口定义的方法
b.在onBind()中返回
③客户端
a.实现ServiceConnection接口,在其中拿到AIDL类
b.bindService()
c.调用AIDL类中定义好的操作请求
Binder相关知识:
Binder 是一个类,实现了IBinder接口,IBinder接口定义了与远程对象的交互协议。通常
在进行跨进程通信时,不需要实现Binder接口,直接从Binder派生即可。
除了实现Binder接口外,Binder中还提供了两个重要的接口:
a.Transact(),客户端调用,用于发送调用请求。
b.onTransact(),服务端响应,用于接收调用请求。
Binder成为了客户端与服务端的通信媒介,其主要作用在Service组件应用中。
Service与客户端通信,有两种方式,AIDL和Messenger.AIDL基于Binder,而Messenger基于AIdl.