Inter-Process Communication · Android 多进程开发详解
IPC全称 Inter-Process Communication,也就是跨进程通信。
它主要用于 Android不同进程之间进行交流,比如:
本质上,IPC 是一种机制,允许两个或多个进程之间交换数据和信号。
多进程主要是为了内存隔离而不是去获得更多的内存分配。
多进程的一个重要实际用途是崩溃隔离。
在 SceneView中遇到的实际案例:
ViewNode组件内部 destroy()方法的资源释放顺序和 Filament渲染引擎生命周期规则相悖解决方案:为其开辟一个新的进程与主进程隔离,可以暂时解决这个 Bug。
因为每个进程有自己独立的内存,其他进程不能随便访问,这就让进程之间的数据交流并不容易。
正是由于这种隔离性,需要专门的跨进程通信机制来实现进程间的数据交换。
下表从并发能力、实现复杂度、数据大小、适用场景四个维度对比六种主流 IPC 方式:
| 方式 | 并发支持 | 实现复杂度 | 数据量 | 最佳场景 |
|---|---|---|---|---|
| AIDL | 多线程并发 | 高 | 大 | 复杂RPC、实时通信 |
| Messenger | 串行(Handler) | 低 | 小 | 简单消息传递 |
| ContentProvider | 多线程 | 中 | 中 | 数据共享、CRUD |
| 文件共享 | 需自行处理 | 低 | 大 | 低频数据交换 |
| Socket | 取决于实现 | 中 | 大 | 跨设备通信 |
| Ashmem | 需同步机制 | 中 | 极大 | 大数据量共享内存 |