零.前言
本片文章主要介绍Android AIDL的概念和使用,着重介绍AIDL的使用。
一.基本概念
什么是Binder:简单的来讲,我们可以将Binder看成Android进程间通信的一种方式,是Android的特性之一。
什么是ALDL:AIDL ( Android Interface Definition Language ) Android接口定义语言。AIDL是一种编程规范,用于生成在Android设备上两个进程通信的代码,内部是使用Binder实现的。
二.AIDL支持的数据类型
- Java基本数据类型:boolean char byte int long float double string
- List和Map(集合存储的元素必须是AIDL支持的类型,服务端接收的实体必须是ArrayList和HashMap)
- 其他AIDL接口
- 实现Parcelable接口的可序列化引用类型
三.AIDL的使用
1.新建AIDL文件
工程Main目录下新建和java目录平级的aidl目录——新建包名——新建AIDL文件
示例如下:
image
*PluginData.aidl:
- 这里需要注意:在AIDL中使用的数据类型,除了基本数据、list和Map其他类型必须使用import关键字导入
package com.li.pluginapp;
import com.li.pluginapp.TestData;
interface PluginData {
String conversionJsonData(String formJsonData);
/**
* 除了基本数据类型,其他类型的参数都需要标上方向类型:in(输入), out(输出), inout(输入输出)
*/
void addTestData(in TestData data);
List<TestData> getTestData();
}
2.声明Parcelable对象
- 自定义的数据类型,必须实现Parcelable接口
- 自定义的数据类型,必须创建一个和实体类同名的映射 aidl 文件,同时声明为parcelable类型
*TestData.java