美文网首页
systemserver和ams启动

systemserver和ams启动

作者: nich | 来源:发表于2021-12-21 14:00 被阅读0次

    systemserver启动

    在frameworks/base/service/java/com/android/server/systemserver.java

    然后看run方法里面主要四个方法

    createSystemContext();

    startBootstrapServices(t);//启动引导服务

    startCoreServices(t);//启动核心服务

    startOtherServices(t);//启动其他服务

    looper.loop

    createSystemContext

    下面是设置系统主题,主要看activitythread

    点击进去可以看到主要是

    获取资源管理器和最主要的attach()方法

    启动的app进程是创建appliactionthread对象,然后minitialapplication赋值,system_server进程是由activity thread的attach()赋值的,普通的app进程是由activitythread的handlebindapplication过程赋值的

    系统app启动

    首先是创建并实例化了一个Instrumentation对象,然后先调用了ContextImpl的静态方法createAppContext() 创建了一个实例,紧接着调用上面的ContextImpl实例context来创建Application对象,此处的Application就是我们程序入口的那个Application,我们看看怎么创建的

    initializeJavaContextClassLoader 设置当前线程的Context ClassLoader,最终调用了Instrumentation的newApplication创建mApplication对象。

    startBootstrapServices

    mActivityManagerService =ActivityManagerService.Lifecycle.startService(mSystemServiceManager, atm);

    通过反射调用 serviceClass 的构造方法 创建 Lifecycle 对象,并调用start方法启动。

    看一下ams构造函数,主要干了新建android.ui线程,ActivityStackSupervisor,ActiveServices

    接下来看start方法

    移除所有进程组,启动电池统计服务啥的,再往下看是一些mActivityManagerService.setInstaller 设置AMS的APP安装器mActivityManagerService.initPowerManage,mActivityManagerService.setSystemProcess();

    加载各种服务getSystemContext().installSystemApplicationInfo 最终调用LoadedApk的installSystemApplicationInfo,加载名为“android”的package

    其他两个慢慢整


    相关文章

      网友评论

          本文标题:systemserver和ams启动

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