一个进程空间分为:
- 用户空间:数据不可共享,所以用户空间 = 不可共享空间
- 内核空间:数据可共享,所以内核空间 = 可共享空间
Binder 的作用则是:连接两个进程,实现了mmap()系统调用,主要负责创建数据接收的缓存空间 & 管理数据接收缓存。
传统的跨进程通信需拷贝数据2次,但 Binder 机制只需1次,主要是使用到了内存映射
Android中IPC的不同方式比较
名称 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Bundle | 简单易用 | 只能传输Bundle支持的数据类型 | 四大组件间的进程间通信 |
文件共享 | 简单易用 | 不适合高并发场景,并且无法做到进程间的即时通信 | 无并发访问场景 |
AIDL | 功能强大,支持一对多并发通信,支持实时通信 | 无 | 一对多通信且有RPC需求 |
Messager | 功能一般,支持一对多并发通信,支持实时通信 | 不能很好处理高并发场景,不支持RPC | 低并发的一对多通信,无RPC需求 |
ContentProvider | 在数据源访问方面功能强大 | ||
Socket | 功能强大 |