android中,应用与应用、应用内不同进程之间需要做数据传递时,就需要用到进程间通信,常用的进程间通信有7种,而使用最多的便是aidl,aidl是基于binder来实现的。
传统IPC对比
名称 | 性能 | 特点 | 安全性 |
---|---|---|---|
Binder | 需要拷贝一次 | 基于C/S架构,易用性高 | 为每个App分配UID,同时支持实名和匿名 |
共享内存 | 无需拷贝 | 控制复杂,易用性差 | 依赖上层协议,访问接入点是开放的不安全的 |
Socket | 需要拷贝两次 | 基于C/S架构,作为一款通用接口,其传输效率低开销大 | 依赖上层协议,访问接入点是开放的不安全的 |
aidl使用
1. 定义一个AIDL文件
类似于定义接口类型,这个AIDL文件将在本地和远端都要使用到
interface IMyAidlInterface {
void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
double aDouble, String aString);
int sendData(String data);
String getData();
}
2. 定义远程服务
在远程服务中的onBind方法,实现AIDL接口的具体方法,并且返回Binder对象
public class