Binder 机制工作原理大体分为3部分:
- 客户端
- 服务端
- Binder驱动 : 其中 Binder 驱动是 Android 系统专门提供的,用于辅助客户端远程调用服务端对象的一个底层架构。
服务端
做的工作是:
* 准备`Binder对象`,用于`客户端`远程调用
* 准备好`Binder对象`之后,创建一个Binder线程,用于等待客户端发起远程请求
(这个远程请求是`客户端`通过`Binder驱动`发起的)
* 当`服务端`收到`客户端`通过`Binder驱动`发送过来的请求时,`服务端`会调用`Binder对象`
中的`onTransact()`方法,根据`客户端`传递过来的参数去执行不同的`服务端`代码,用于
获取`服务端`的数据或调用`服务端`的方法
客户端
做的工作是:
* `客户端`如果想要远程访问`Binder服务`,就得获取远程`服务端的Binder对象`,获取Binder对象就得首先获得`Binder驱动` 生成的`mRomote对象引用`
* 当获取到`Binder驱动`的`mRemote引用`后,就可以调用相应的`Binder对象`暴露给`客户端`的方法
通过上面的服务端
和 客户端
要做的工作之后,我们应该就能分析出Binder驱动
主要的工作了。
Binder驱动
:
当`服务端`创建好`Binder对象`之后,`Binder驱动`会自动创建一个`mRemote对象`,客户端
可以通过这个对象调用`transact()`方法去远程调用 `服务端`,从而触发`服务端`的
`onTransact()`方法,从而获取`服务端`的信息或者调用`服务端`方法。
网友评论