11.Binder

作者: from0 | 来源:发表于2018-03-26 14:09 被阅读2次

    什么是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

    使用场景

    1. 四大组件的启动。AMS 是 Binder,ApplicationThread 也是 Binder。
    2. App 多进程模块互相调用,或者 App 之间通信。

    相关文章

      网友评论

          本文标题:11.Binder

          本文链接:https://www.haomeiwen.com/subject/zmxuqftx.html