Android中进程间通讯常见的几种方式以及使用场景

    上一个星期看刚哥的书,主要进行了Android中IPC机制的学习,具体的实现方式网上有很多,我这里只是进行简单的总结。
    Android中不同的进程中的组件,拥有独立的虚拟机,Application,以及内存空间,所以不能通过共享内存来进行数据交互。下面几种方法却可以实现数据交互。
    介绍之前有必要了解一下IPC和RPC的区别:RPC强调的是调用、即一个进程直接调用另外一个进程中的方法,
    而IPC仅仅完成进程间的互通信、没有函数调用功能。RPC其实就是添加了进程间函数调用功能的IPC。
  1. 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(这里我也不是很明白,间接的怎么实现?)
使用场景:网络的数据交换

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值