目录
一、Android应用层IPC通信方式
二、IPC通信数据拷贝次数
这里指的从应用层角度,IPC通信方式。简单记录一下。
一、Android应用层IPC通信方式
- Bundle:四大组件中的三大组件(Activity、Service、Receiver)都是支持在Intent中传递Bundle数据。传输的数据必须基本数据类型或者能够被序列化,只能单方向。
- 文件共享:适合数据同步要求不高的场景,需要处理并发场景。
- Message:两个Service一个服务端一个客户端,Message内部消息处理使用Handler实现,串行处理,并发量大的场景不适用。
- AIDL:占用资源多一些,实现麻烦一些。
- ContentProvider:一般配合数据库使用。
- Broadcast:广播是一种被动跨进程通信方式。当某个程序向系统发送广播时,其他的应用程序只能被动地接收广播数据。如果 onReceiver() 方法不能再10秒之内完成事件的处理,Android 会认为该进程无响应ANR。
- Socket:主要应用于网络通信。可实现一对多,多次accept()或开多个端口。开发量较大。
二、IPC通信数据拷贝次数
IPC通信数据拷贝次数:
IPC | 数据拷贝次数 |
共享内存 | 0 |
Binder | 1 |
Socket/管道/消息队列 | 2 |
参考优秀博客:
Android IPC之Binder机制分析_Dawish_大D的博客-CSDN博客_ipcbinder
Android 进程间通信_android进程间通信_ByteSaid的博客-CSDN博客
Binder在通信时,为什么只需要一次拷贝? - 简书 (jianshu.com)