点击领取优惠~
202 字
1 分钟
ServiceManger查找服务
ServiceManger查找服务
回答这个问题的时候,我们紧扣2个点
- 找到ServiceManger服务
- 传入name到ServiceManger查询服务
如何找到ServiceManager服务这个前面已经说过了,总结下就是getIServiceManager从binder驱动拿到handle=0的BpBinder,进而拿到ServiceManager,开启后续流程
查询服务这里看下核心代码
最终还是通过BpBinder发送消息,进而发送到Binder驱动。
此时驱动收到的信息包括不限于:
- 服务的名字
- ServiceManager的handle
Binder驱动收到消息后,找到ServiceManger,并将服务的名字传给ServiceManger,ServiceManger从自己维护的链表里找到服务名相同的节点,最终取出该服务的handle,发送给Binder驱动。通过进程间通信告知发起查询的进程
ServiceManger查找服务