AIDL
AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。 编写执行这一编组操作的代码是一项繁琐的工作,因此 Android 会使用 AIDL 来处理。AIDL 官方文档1. AIDL 中需要了解的基本知识点;
一. 你真的了解 AIDL 中的 in out inout 吗?
二. 创建时的注意事项
1).基本数据类型(int,long,char,boolean)。
2). String。
3). CharSequence
4). List
List
中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 可选择将 List
用作“通用”类 (例如,List<String>
)。另一端实际接收的具体类始终是 ArrayList
,但生成的方法使用的是 List
接口。
5). Map
Map
中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 不支持通用 Map(如 Map<String,Integer>
形式的 Map)。 另一端实际接收的具体类始终是 HashMap
,但生成的方法使用的是 Map
接口。
2. AIDL 创建的基本步骤;
一. 定义 AIDL 接口
1). 编写 AIDL 文件。
在 Server 端 src/main 与 java 同级目录下创建 一个包并创建 aidl 文件,如下图。
注意: 传递的数据 Bean 必须实现 Parcelable 并在 java 目录下创建与 aidl 文件的包名一样的目录。
2 ). 服务端实现该接口并返回 IBinder 对象。
3). Copy Server 端 aidl 文件和数据 bean 。
客服端的包结构
服务端的包结构
3. 结果
4. 结束语:
现在到这里相信小伙伴们已经能够使用 aidl 进行进程间通信了,下一篇将未大家带来 aidl 中的高级使用。