SystemServiceManager -- 系统服务管理者

SystemServiceManager – 系统服务管理者

  • SystemServiceManager(SSM)是用来管理系统运行所要用到的具体Service的(这些Service都继承于SystemService)。
  • SSM由SystemServer创建,可以启动系统级服务并控制SystemService的生命周期
  1. 三种方式启动系统级服务

    //第一种,通过类名启动
    public SystemService startService(String className) {
        ...;
        serviceClass = (Class<SystemService>)Class.forName(className);
        ...;
        return startService(serviceClass);
    }
    //第二种,通过serviceClass启动
    public <T extends SystemService> T startService(Class<T> serviceClass) {
        ...;
        Constructor<T> constructor = serviceClass.getConstructor(Context.class);
        service = constructor.newInstance(mContext);
        ...;
        startService(service);
    }
    //第三种,通过SystemService启动
    public void startService(@NonNull final SystemService service) {
        mServices.add(service); //所有系统级服务都存储在mServices链表中,SSM通过管理这个链表来实现对各个SystemService的管理
        ...;
        service.onStart();
        ...;
    }
    

不难发现前两种启动方式最终都调用了第三种启动方式,service.onStart()中具体有哪些事情详见 SystemService – 所有系统级服务的父类 章节

  1. 启动检测

  2. 和用户相关的方法

    public void startUser(final int userHandle) {//启动用户
        ...
        final SystemService service = mServices.get(i);
        service.onStartUser(userHandle);
    }
    public void unlockUser(final int userHandle){...}
    public void switchUser(final int userHandle){...}
    public void stopUser(final int userHandle) {...}
    public void cleanupUser(final int userHandle) {...}
    //这几个方法与startUser类似,都是通过调用SystemService中相应的方法来实现
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值