Android进程间通信

# Android进程间通信 > create time:2020/04/07 > author:licoba 废话不多说,一图胜千言: ![](https://pic.downk.cc/item/5e8c4a10504f4bcb040a4656.jpg) ## Android 进程间通信方法 > 文件共享、AIDL、Intent、Messenger、ContentProvider、Socket #### 1、Bundle(Intent) 可以看到Bundle实现了Parcelable接口 优点:简单易用 缺点:只能传递Bundle支持的数据类型 使用场景:四大组件间的进程通讯 #### 2.文件共享 优点:简单易用 缺点:不适合高并发的场景,不能做到即时通讯。 使用场景:无并发访问的情景,简单的交换数据,实时性要求不高。 #### 3.AIDL 优点:功能强大,支持一对多并发通信,支持实时通信。 缺点:一定要处理好线程同步的问题 使用场景:一对多进行通讯,有RPC(远程过程调用协议)的需求 #### 4.Messenger(信使) 优点:功能一般,支持一对多串行通信,支持实时通信。 缺点:不能很好的处理高并发场景,不支持RPC,数据通过Message进行传输,因此只能支持Bundle支持的数据类型。 使用场景:低并发的一对多的实时通讯,没有RPC的需求或者说没有返回结果的RPC(不调用服务端的相关方法) #### 5.ContentProvider 优点:主要用于数据访问,支持一对多的并发数据共享。 缺点:受约束,主要针对数据源的增删改查。 使用场景:一对多的数据共享。 #### 6.Socket(套接字) 优点:功能强大,通过读写网络传输字节流,支持一对多的并发的实时通讯。 缺点:不支持直接的RPC 使用场景:网络的数据交换 ## IPC和RPC的区别 - IPC仅仅完成进程间的互通信、没有函数调用功能。 - RPC强调的是调用,即一个进程直接调用另外一个进程中的方法。 (RPC其实就是添加了进程间函数调用功能的IPC) --- 【参考文章】 - [Android中进程间通讯常见的几种方式以及使用场景](https://blog.csdn.net/qdh186/article/details/78316952)