Android进程间通信
# Android进程间通信
> create time:2020/04/07
> author:licoba
废话不多说,一图胜千言:

## 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)