Context.getSystemService


Context.getSystemService

1、android 写应用时,经常用到的一个接口,如下:


看着这个接口的名字,是获取系统的Service,给我的错觉得是,直接得到某个Service的BinderProxy接口,但实际上不是这样的,而是得这个

原创转载请注明出处:



Service的xxxManager接口,而xxxManager刚好是的xxxService的Client。所以得出的结论是,Context.getSystemService 返回的是不是一个service,而是某一种service的Client。

Context.getSystemService()在ContextImpl.java的实现如下:





可以看出,这是在一个HashMap中直接根据名字获取的,那么在什么时候把xxxManager加入到这个HashMap中呢,同样是在 ContextImpl.java中,部分的代码截图如下:

这个registerService就是把xxxManager加入到这个SYSTEM_SERVICE_MAP的HashMap中的


以刚才的DropBoxManager为例:



这样就比较详细是怎么回事了


2、ServiceManager.getService("xxx")才是直接得到某个Service的BinderProxy接口。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值