android 获取系统service,Android系统--ServiceManager服务

最近在学习Android内核设计思想,看书的过程中将一些小知识点积累了一下。

需要解决的问题

因为发送请求的Binder client可能是应用程序,所以必须提供Java层的==接口==(需要找出这个接口是什么)

每个调用binder服务的程序,不需要亲自去执行如下步骤,所以需要封装如下功能

打开binder设备

执行mmap

通过binder驱动向ServiceManager发送请求

返回结果

如果每次调用都必须打开servicemanager服务,那么将会消耗很多资源,所以每个进程只能打开一次Binder设备,且只做一次内存映射,所有需要使用binder驱动的线程共享这一资源

相关类的解析

序号

相关内容

作用

1

ProcessState

专门管理每个应用进程当中对应的Binder操作

2

IPCThreadState

与Bnder驱动进行实际命令通信

3

ServiceManagerProxy

接口,用来封装ServiceManeger提供的服务

4

ServiceManager.java

封装了3的类

采用1和2两个类,已经可以实现与Binder驱动进行通信

为了实现这个接口,实现对服务的获取,有以下两步要做:

与Binder建立联系

因为已经有了1,2两个类,所以与Binder驱动的通信实际上是通过他们来实现,因此称他们为BpBinder<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值