什么是Binder?简单描述下它的工作过程和使用场景
什么是 Binder
Binder 是 Android 中的一种跨进程的通信方式。采用 C/S 架,是客户端和服务端通信的媒介,Binder 十分适合 Android 系统,性能高效,只会复制一次;安全性高,每个进程有自己的 UID。
Binder 还可以理解为一种虚拟的物理设备,它的设备驱动是 /dev/binder。
工作过程
服务端在初始化时在 ServiceManager 注册,客户端使用的时候向 ServiceManager 请求查找对应的服务。framework 层中服务端间接继承自 Binder,客户端间接继承自 BinderProxy 代理类。客户端通过 Bidner 向服务器发起请求,这个过程是同步的,客户端会被挂起直到接收到服务端的回应,Binder 中把请求的信息写入到 Parcel 对象 data 中,调用 transact 将请求发给服务端,服务端收到后,回调 onTransact 方法,在线程中处理,读取之前的 data 数据,将处理后的数据写入 reply 中,返回给 Binder。这样就完成了一次调用过程。
image使用场景
- 四大组件的启动。AMS 是 Binder,ApplicationThread 也是 Binder。
- App 多进程模块互相调用,或者 App 之间通信。
网友评论