binder 进程间的通信机制
Binder : android 进程间的通信机制 ; linux下 dev/binder 驱动 ; java的Binder.java 跨进程
多进程的优势: 扩大内存 ; 危险隔离
扩大内存:一个进程能申请的空间有限,可以通过多进程申请到更多内存。
危险隔离:加载图片时,使用多进程能够防止主线程崩溃。
binder的优势: binder 共享内存 socket(管道,通道信号)
性能: 只拷贝一次 无需拷贝 拷贝两次
特点: c/s架构 控制复杂 c/s架构 通用,效率低,开销大
安全:app分配uid,同时支持实名和匿名(binder) ; 依赖上层协议,接入点开放,不安全(共享内存/socket)
binder如何做到一次拷贝: 了解内存划分 ; mmap(内存映射)
内存划分:用户空间和内核空间(虚拟内存)
传统IPC: 客户端拷贝数据到内核空间内核空间指向一个物理内存,服务端又指向一个不同的物理内存,因此需要拷贝两次。
binder: 客户端拷贝到内核空间,内核空间通过mmap到一个物理内存,并且服务端指向同一内存。
AIDL:接口定义语言(通过接口语言生成java代码)
asInterface :判断是否在同一进程
transact: 会挂起线程
reply:打包数据返回
服务端的接受允许在binder线程里面
四大组件通信:
广播是怎么跨进程的:
client(客户端)—— serviceManager ——AMS(activity manager service) ——service(服务端)——AMS 返回IBinder对象
Intent能传递多大的数据:1M - 8k
本文地址:https://blog.csdn.net/weixin_40790006/article/details/107599664
上一篇: PPT2010如何设置和修改文档密码防止他人打开或修改
下一篇: 女孩请你们记住