AIDL
概述:它是用于某个service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享一个Service的功能,从而进一步实现进程间的通信(也就是一个远程服务)
AIDL的客户端与服务端:
服务端:服务端首先要创建一个service(这个服务的binder继承AIDL接口.stub,重写接口中的所有方法后可以通过传参,或者return语句进行信息的传递)用来监听客户端的连接请求,然后创建一个AIDL文件将暴露给客户端的接口在AIDL说明,最后在Serivce中实现这个AIDL接口
客户端:客户端首先需要创建新的AIDL,并且必须和服务端的AIDL所属的包名一致,要绑定服务器的Service,绑定成功后,将服务器返回的binder对象转换为AIDL接口所属的类型,接着调用AIDL中的方法实现进程间的通信。
可使用的数据类型:八大基本数据类型
String
CharSequence
List中的ArrayList
Map中的HashMap
主要实现的是 Android 的Parcelable接口
IPC机制
名称 | 优点 | 应用场景 |
Bundle | 简单 | 四大组件 |
文件共享 | 简单 | 数据交换 |
AIDL | 实时通信,支持多并发 | 多通信,RPC(通过网络从计算器请求数据) |
Messenger | 实时通信,功能没有AIDL强大低并发 | 无法进行RPC |
ContentProvider | 用于访问数据 | 数据共享 |
Socket | 功能强大,网络传输(通过字节流) | 网络数据交换 |