共享内存:
优点是速度快,它是通过共享缓存区直接映射到进程的虚拟内存空间实现的。缺点也很明显,同步需要借助其他同步工具,且实现起来复杂。
消息队列
进程发送数据块给另外一个进程,需要进行两次数据拷贝。不太适合交互频繁或者数据量大的场景。
管道
分为有名/无名管道,就是在创建时共享一个Page大小的共享缓存区,缺点是数据量有限。
信号量
一般是作为锁机制,用于进程/线程同步。
信号
一般用于进程中断控制,不用于数据传输。
Socket/LocalSocket
使用网络的方式来实现进程通信。
Binder
安卓中提供的一种跨进程通信机制。
匿名共享内存
在安卓中有一个独特的匿名共享子系统,它是采用linux的tmpf文件系统来实现内存共享,从而是按进程通信。它有两个特点:首先是通过辅助内存管理系统来管理不再使用的内存块。另外呢其是通过Binder来实现内存共享的。
File
通过读写同一文件也可以实现进程通信,不适用于高并发。
ContentProvider
安卓的四大组件之一,常用于进程间数据共享,特别是一对多的场景,不过受限于AIDL。
Bundle
Bundle是通过实现了Parceable接口从而实现进程间数据传输,Acitivity、Service、Receiver在Intent里面都是通过Bundle来进行数据传输的,不过Bundle的缺点是只有支持的数据类型才能传输,同时不适合数据量大的传输。