SystemServer进程

SystemServer 是 Zygote创建的第一个 Java 进程,由startSystemServer()@ZygoteInit.java方法进行 fork,以下以 SystemServer 的入口函数是 SystemServer.main()为基础,其调用时机在Zygote进程及其孵化子进程(system_server及ActivityThread)的流程一

public static void main(String[] args){
  new SystemServer().run();
}

下面摘抄run()的关键步骤:

private void run(){
  //一些参数初始化工作
  ...
  Looper.prepareMainLooper();
  ...
  //创建系统上下文对象,包含关键的 ActivityThread和 Context
  createSystemContext();
  ...
  //启动服务,包括 AMS,WMS,PMS 等
  startBootstrapServices();
  startCoreServices();
  startOtherServices();
  ...
  Looper.loop();
}

这里主要看createSystemContext();

private void createSystemContext(){
  ActivityThread activityThread = ActivityThread.systemMain();
  mSystemContext = activityThread.getSystemContext();
}

下面转到 ActivityThread.java 中

  • 分析 systemMain()
public static ActivityThread systemMain(){
  ...
  ActivityThread thread = new ActivityThread();
  thread.attach(true);
}

构造函数没有做什么工作,主要是这个 attach(true)方法

private void attach(boolean system){
  sCurrentActivityThread = this;
  //是否是系统进程,这里的system = true;
  mSystemThread = system;
  if(!system){
  ...
  }else{
    ...
    //就是创建了 Instrumentation 对象,并且创建其 Application 对象
    mInstrumentation = new Instrumentation();
    ContextImpl context = ContextImpl.createAppContext(this,getSystemContext().mPackageInfo);
     mInitialApplication = context.mPackageInfo.makeApplication(true,null);
    mInitialApplication.onCreate();
  }
}
public ContetImpl getSystemContext(){
  synchronized(this){
    if(mSystemContext == null){
      //创建一个 Context 对象,其实在 Android 中Context 的实现类只有 ContextImpl,在你运行的 Activity 等组件中,Context 的方法实质上都是这个 ContextImpl.
      mSystemContext = ContextImpl.createSystemContext(this);
    }
    return mSystemContext;
  }  
 }
static ContextImpl createSystemContext(ActivityThread mainThread){
  LoadedApk packageInfo = new LoadeApk(mainThread);
  ContextImpl context = new ContextImpl(null,mainThread,packageInfo,null,null,false,null,null,Display.INVALID_DISPLAY);
  ...
  return context;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容