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 中的高级使用。
本文介绍了AIDL在Android进程间通讯中的基本用法,包括AIDL中in、out、inout的概念,创建时的注意事项,如数据类型限制,以及AIDL接口定义、服务端接口实现和Bean实现Parcelable的步骤。通过学习,读者将能够掌握AIDL的基础操作。
504

被折叠的 条评论
为什么被折叠?



