0%

Android进程间通信的方式

Android进程间通信方式
  1. Bundle
  2. 文件共享
  3. AIDL Android自定义接口语言
  4. Messenger
  5. ContentProvider
  6. Socket
针对这几种IPC通信方式分析一下优缺点

1.Bundle :
简单易用 但是只能传输Bundle支持的对象 常用于四大组件间进程间通信
2.文件共享:
简单易用 但不适合在高并发的情况下 并且读取文件需要时间 不能即时通信 常用于并发程度不高 并且实时性要求不高的情况
3.AIDL :
功能强大 支持一对多并发通信 支持即时通信 但是使用起来比其他的复杂 需要处理好多线程的同步问题 常用于一对多通信 且有RPC 需求的场合(服务端和客户端通信)
4.Messenger :
功能一般 支持一对多串行通信 支持实时通信 但是不能很好处理高并发情况 只能传输Bundle支持的类型 常用于低并发的无RPC需求一对多的场合
5.ContentProvider :
在数据源访问方面功能强大 支持一对多并发操作 可扩展call方法 可以理解为约束版的AIDL 提供CRUD操作和自定义函数 常用于一对多的数据共享场合
6.Socket :
功能强大 可以通过网络传输字节流 支持一对多并发操作 但是实现起来比较麻烦 不支持直接的RPC 常用于网络数据交换

总结
  • 当仅仅是跨进程的四大组件间的传递数据时 使用Bundle就可以 简单方便
  • 当要共享一个应用程序的内部数据的时候 使用ContentProvider实现比较方便
  • 当并发程度不高 也就是偶尔访问一次那种 进程间通信 用Messenger就可以
  • 当设计网络数据的共享时 使用socket
  • 当需求比较复杂 高并发 并且还要求实时通信 而且有RPC需求时 就得使用AIDL了
  • 文件共享的方法用于一些缓存共享 之类的功能