美文网首页
Android中进程间通讯常见的方法IPC

Android中进程间通讯常见的方法IPC

作者: 邓立_全栈UncleLi | 来源:发表于2021-06-01 09:28 被阅读0次

    跨进程通信(IPC)方式

    • Bundle实现了Parcelable接口

      • 优点:简单易用
      • 缺点:只能传递Bundle支持的数据类型
      • 使用场景:四大组件间的进程通讯
    • 文件共享

      • 优点:简单易用
      • 缺点:不适合高并发的场景,不能做到即使通讯
      • 使用场景:无并发访问的情景,简单的交换数据,实时性要求不高
    • AIDL

      • 优点:功能强大,支持一对多并发通讯,支持实时通信
      • 缺点:一定要处理好线程同步的问题
      • 使用场景:一对多进行通讯,有RPC(远程过程调用协议)的需求
    • Message

      • 优点:功能一般,支持一对多串行通讯,支持实时通信
      • 缺点:不能更好的处理高并发场景,不支持RPC,数据通过Message进行传输,因此只能支持Bundle支持的数据类型
      • 使用场景:低并发的一对多的实时通讯,没有RPC的需求或者说没有返回结果的RPC
    • ContentProvider

      • 优点:主要用于数据访问,支持一对多的并发数据共享
      • 缺点:受约束,主要支队数据源的曾删改查
      • 使用场景:一对多的数据共享
    • Socket(套接字)

      • 优点:功能强大,通过读写网络传输字节流,支持一对多的并打的实时通讯
      • 缺点:不支持直接的RPC
      • 使用场景:万络数据的交换
    • BroadcastReceiver

      • 优点:操作简单,支持一对多实时通信
      • 缺点:只支持数据单向传递,效率低且安全性不高
      • 使用场景:一对多的低频单向通信

    Binder机制

    • 简介

      • AIDL,Messenger,Socket,ContentProvider这些机制底层全部都是用了Binder机制来实现进程间通信
    • 为何新增Binder作为主要的IPC方式

      • Binder是Android系统中的一种IPC进程间通信结构,使用了mmap,内存映射机制
      • Binder的整个设计时C/S结构,客户端进程通过获取服务端进程的代理,并通过向这个代理接口方法中读写数据来完成进程间的数据通信
    • Android之所以选择Binder,有2个方面原因

      • 安全,每个进程都会被Android系统分配UID和PID,不想传统的在数据里加入UID,这就让那些恶意进程无法直接和其他进程通信,进程间通信的安全性得到提升
      • 高效,像Socket之类的IPC每次数据拷贝都需要2次,而Binder只需要一次,在手机上这种资源紧张的情况下很重要

    相关文章

      网友评论

          本文标题:Android中进程间通讯常见的方法IPC

          本文链接:https://www.haomeiwen.com/subject/dkwhjltx.html