Android知识点6--Android 中常见的IPC机制都有哪些?

125 阅读2分钟

IPC:进程间通信

Linux中的IPC机制

管道 Pipe 管道:在内存中创建一个共享文件,从而使通信双方利用这个共享文件传递消息,这个共享文件只存在于内存中,管道采用半双工通信方式。半双工指的是不能在两个方向上 同时进行数据传输,必须轮流交替进行。类似步话机。

信号 信号是一种异步通信方式,可以在用户空间和内核之间直接交互,内核可以利用信号来通知用户空间的进程发生了哪些系统事件,信号不适用与信息交互,适用于进程中断控制。

信号量 信号量是一个计数器,用来控制多个进程对共享资源的访问,信号量常作为一种锁机制,作为进程间或者同一进程内多线程之间的同步手段。

消息队列 消息队列是消息的链表,存在在内存中由消息队列标志符对其进行标识,允许一个或多个进程对它进行读写。使用消息队列会使消息复制两次,对于频繁通信或消息量大的通信不建议使用。

共享内存 共享内存是多个进程可以直接读写一块内存空间,内核专门留出一块内存去,由需要访问的进程将其映射到自己的私有地址空间。

套接字 套接字是更基础的进程间通信机制,可用于不同机器间的进程通信。

Android 中的IPC机制

Bundle 只能传输Bundle支持的数据,四大组件间的进程间通信

文件共享 不适合高并发场景,无法做到即时通信

AIDL 支持一对多,支持实时通信,需要处理好线程同步,满足跨进程的方法调用

Messenger 支持一对多串行通信,不支持RPC,数据通过Message进行传输

ContentProvider 底层实现也是Binder,在不同应用程序间传递数据,支持一对多并发数据共享,可通过Call进行扩展

Socket 支持一对多并发实时通信,可通过网络传输字节流