Android Binder机制 defaultServiceManager() 的实现

本文深入解析了Android系统中Binder机制的工作原理,重点介绍了IServiceManager对象如何用于Server与ServiceManager进程之间的通信,以及Client如何通过该对象获取Server。文章还详细解释了远程BpBinder对象和本地BBinder对象的角色和功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

defaultServiceManager()返回的是C++层的IServiceManager对象

获取IServiceManager对象的目的是为了和ServiceManager进程进行通信

如:Server要通过IServiceManager对象发送请求指令注册到ServiceManager进程中,Client要通过IServiceManager对象发送请求来获取Server对象

ServiceManager进程是一个守护进程

 

对于一个server而言,它都会存在一个“远程BpBinder对象”和“本地BBinder对象”

远程BpBinder对象的作用是和Binder驱动进行交互,具体的方式是:当Server要向Binder发起事物请求时,会调用BpBinder的transact()接口,而该接口会调用IPCThreadState::transact()接口,通过IPCThreadState类和Binder驱动交互,并且BpBinder在Binder驱动中的Binder引用描述会被保存到ProcessState类的mHandleToObject矢量缓冲数组中。

本地BBinder是Server响应Client请求的类,当Client有请求发送给Server时,都会调用到BBinder的onTransact()函数,而每个Server都会覆盖onTransact()函数,这样,每个Server就可以在onTransact()中根据自己的情况来对请求进行处理。

转载于:https://www.cnblogs.com/chen-cai/p/9642724.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值