Android有哪些跨进程通信的方式

Posted by pxf on March 18, 2018

Android有哪些跨进程通信的方式

Android 进阶13:几种进程通信方式的对比总结

跨进程通信要求把方法调用及其数据分解至操作系统可以识别的程度,并将其从本地进程和地址空间传输至远程进程和地址空间,然后在远程进程中重新组装并执行该调用。

然后,返回值将沿相反方向传输回来。

Android 为我们提供了以下几种进程通信机制

供开发者使用的进程通信 API)对应的文章链接如下:

在上述通信机制的基础上,我们只需集中精力定义和实现 RPC 编程接口即可。

如何选择这几种通信方式

《Android 开发艺术探索》中总结的已经比较全面了:

这里写图片描述

这里再对比总结一下:

  • 只有允许不同应用的客户端用 IPC 方式调用远程方法,并且想要在服务中处理多线程时,才有必要使用 AIDL
  • 如果需要调用远程方法,但不需要处理并发 IPC,就应该通过实现一个 Binder 创建接口
  • 如果您想执行 IPC,但只是传递数据,不涉及方法调用,也不需要高并发,就使用 Messenger 来实现接口
  • 如果需要处理一对多的进程间数据共享(主要是数据的 CRUD),就使用 ContentProvider
  • 如果要实现一对多的并发实时通信,就使用 Socket