理解Android binder机制的关键
2013-04-26 22:28
357 查看
理解binder机制的关键在于BBinder和BpBinder,前者表示本地IBinder接口,后者表示远程IBinder接口。BBinder用于为服务进程提供接口,而BpBinder是BBinder的代理,客户端可以通过它获得服务。
那么为什么BpBinder能够作为代理获得BBinder提供的服务呢?这就是binder设备驱动的作用了。
如果某个服务希望能够对外提供一个BBinder接口,则它必须告知binder设备驱动。为此它向设备驱动程序提供了:服务名、BBinder对象的地址等信息。设备驱动必须能标识这个服务,但BBinder对象的地址是个用户空间的地址,这就意味着其他的BBinder对象地址可能和这个地址相同。而通过服务名进行标识,似乎效率不高。因此设备驱动生成并管理了和BBinder对象一一对应的handle。BpBinder正是通过这个handle,向驱动发出请求(驱动可以据此找到处理这个请求的服务进程),达到类似远程调用的效果的。因为驱动要求尽量简单,因此它把这些和服务对应的handle的管理交给了Service
Manager的进程维护,客户端可以向Service Manager进程获得handle,然后用这个handle生成BpBinder代理。
理解了BBinder和BpBinder后,再去看相关的代码就容易懂了。
那么为什么BpBinder能够作为代理获得BBinder提供的服务呢?这就是binder设备驱动的作用了。
如果某个服务希望能够对外提供一个BBinder接口,则它必须告知binder设备驱动。为此它向设备驱动程序提供了:服务名、BBinder对象的地址等信息。设备驱动必须能标识这个服务,但BBinder对象的地址是个用户空间的地址,这就意味着其他的BBinder对象地址可能和这个地址相同。而通过服务名进行标识,似乎效率不高。因此设备驱动生成并管理了和BBinder对象一一对应的handle。BpBinder正是通过这个handle,向驱动发出请求(驱动可以据此找到处理这个请求的服务进程),达到类似远程调用的效果的。因为驱动要求尽量简单,因此它把这些和服务对应的handle的管理交给了Service
Manager的进程维护,客户端可以向Service Manager进程获得handle,然后用这个handle生成BpBinder代理。
理解了BBinder和BpBinder后,再去看相关的代码就容易懂了。
相关文章推荐
- Android中的Binder机制的简要理解一
- Android中的Binder机制的简要理解二
- 理解Android Binder机制:驱动篇
- Android特有Binder与IPC机制原理初探,看完应该理解一些些。
- Android中Binder机制理解及AIDL使用基本步骤
- android中的Binder机制的简要理解
- Android实战技术:理解Binder机制
- Android中的Binder机制的简要理解
- Android中的Binder机制的简要理解二
- Android中的Binder机制的理解
- 深入理解 Android 的 IPC 机制--------Binder
- 理解Android系统Binder机制
- 深入理解android之IPC机制与Binder框架
- Android Binder机制理解
- 深入理解 Android 的 IPC 机制--------Binder
- 理解Android Binder机制(1/3):驱动篇
- Android Binder机制原理(史上最强理解,没有之一)
- Android IPC机制之 理解Binder
- 深入理解android之IPC机制与Binder框架
- [置顶] 深入理解android之IPC机制与Binder框架