Android中进程间通讯常见的几种方式以及使用场景
上一个星期看刚哥的书,主要进行了Android中IPC机制的学习,具体的实现方式网上有很多,我这里只是进行简单的总结。Android中不同的进程中的组件,拥有独立的虚拟机,Application,以及内存空间,所以不能通过共享内存来进行数据交互。下面几种方法却可以实现数据交互。介绍之前有必要了解一下IPC和RPC的区别:RPC强调的是调用、即一个进程直接调用另外一个进程中的方法,
上一个星期看刚哥的书,主要进行了Android中IPC机制的学习,具体的实现方式网上有很多,我这里只是进行简单的总结。
Android中不同的进程中的组件,拥有独立的虚拟机,Application,以及内存空间,所以不能通过共享内存来进行数据交互。下面几种方法却可以实现数据交互。
介绍之前有必要了解一下IPC和RPC的区别:RPC强调的是调用、即一个进程直接调用另外一个进程中的方法,
而IPC仅仅完成进程间的互通信、没有函数调用功能。RPC其实就是添加了进程间函数调用功能的IPC。
- Bundle的使用
public final class Bundle extends BaseBundle implements Cloneable, Parcelable
可以看到Bundle实现了Parcelable 接口。
优点:简单易用
缺点:只能传递Bundle支持的数据类型
使用场景:四大组件间的进程通讯
2.文件共享
优点:简单易用
缺点:不适合高并发的场景,不能做到即时通讯。
使用场景:无并发访问的情景,简单的交换数据,实时性要求不高。
3.AIDI
优点:功能强大,支持一对多并发通信,支持实时通信。
缺点:一定要处理好线程同步的问题
使用场景:一对多进行通讯,有RPC(远程过程调用协议)的需求
4.Messenger(信使)
优点:功能一般,支持一对多串行通信,支持实时通信。
缺点:不能很好的处理高并发场景,不支持RPC,数据通过Message进行传输,因此只能支持Bundle支持的数据类型。
使用场景:低并发的一对多的实时通讯,没有RPC的需求或者说没有返回结果的RPC(不调用服务端的相关方法)
5.ContentProvider
优点:主要用于数据访问,支持一对多的并发数据共享。
缺点:受约束,主要针对数据源的增删改查。
使用场景:一对多的数据共享。
6.Socket(套接字)
优点:功能强大,通过读写网络传输字节流,支持一对多的并发的实时通讯。
缺点:不支持直接的RPC(这里我也不是很明白,间接的怎么实现?)
使用场景:网络的数据交换
更多推荐
所有评论(0)