美文网首页
ServiceManager.getService和getSys

ServiceManager.getService和getSys

作者: 浪里_个郎 | 来源:发表于2020-06-18 20:23 被阅读0次

ServiceManager.addService加入的服务,可以通过ServiceManager.getService获取

getSystemService并不能获取到所有ServiceManager中注册的服务。Activity.getSystemService实际上使用的是ContextImpl中的getSystemService,里面包含服务,是通过SystemServiceRegistry的静态代码块进行注册的:

ContextImpl.java
    @Override
    public Object getSystemService(String name) {
        return SystemServiceRegistry.getSystemService(this, name);
    }
    private SystemServiceRegistry() { }

    static {
        registerService(Context.ACCESSIBILITY_SERVICE, AccessibilityManager.class,
                new CachedServiceFetcher<AccessibilityManager>() {
            @Override
            public AccessibilityManager createService(ContextImpl ctx) {
                return AccessibilityManager.getInstance(ctx);
            }});

所以,通过ServiceManager.addService加入的自定义服务,是无法通过getSystemService获取到的

相关文章

网友评论

      本文标题:ServiceManager.getService和getSys

      本文链接:https://www.haomeiwen.com/subject/dfwyxktx.html