2.6 选用合适的IPC方式
在上面的一节中,我们介绍了各种各样的IPC方式,那么到底它们有什么不同呢?我们到底该使用哪一种呢?本节就为读者解答这些问题,具体内容如表2-2所示。通过表2-2,乐意明确地看出不同IPC方式的优缺点和适用场景,那么在实际的开发中,只要我们选择合适的IPC方式就可以轻松完成多进程的开发场景。
<center>表2-2 IPC方式的饿优缺点和适用场景</center>
名称 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Bundle | 简单易用 | 只能传递Bundle支持的数据类型 | 四大组件间的进程间通信 |
文件共享 | 简单易用 | 不适合高并发场景, 并且无法做到进程间的即时通信 |
无并发访问情形, 交换简单的数据实时性不高的场景 |
AIDL | 功能强大,支持一对多并发通信,支持实时通信 | 适用稍复杂,需要处理好线程同步 | 一对多通信且有RPC需求 |
Messenger | 功能一般,支持一对多穿行通信,支持实时通信 | 不能很好处理高并发情形, 不支持RPC,数据通过Message进行传输,因此只能传输Bundle支持的数据类型 |
低并发的一对多即时通信,无RPC需求,或者无须要返回结果的RPC需求 |
ContentProvider | 在数据源访问方面功能强大,支持一对多并发数据共享,可通过Call方法扩展其他操作 | 可以理解为受约束的AIDL,主要提供数据源的CRUD操作 | 一对多的进程间的数据共享 |
Socket | 功能强大,可以通过网络传输字节流,支持一对多并发实时通信 | 实现细节稍微有点繁琐,不支持直接的RPC | 网络数据交换 |
网友评论