zoukankan      html  css  js  c++  java
  • Android系统启动流程(三)解析SystemServer进程启动过程

    1.Zygote启动SystemServer进程

    在上一篇文章中我们讲到在ZygoteInit.java的startSystemServer函数中启动了SyetemServer进程,如下所示。

    frameworks/base/core/java/com/android/internal/os/ZygoteInit.java

    private static boolean startSystemServer(String abiList, String socketName)
                throws MethodAndArgsCaller, RuntimeException {
         ...
            if (pid == 0) {
                if (hasSecondZygote(abiList)) {
                    waitForSecondaryZygote(socketName);
                }
                handleSystemServerProcess(parsedArgs);
            }
            return true;
    }

    2.SystemServer进程启动过程

    启动Binder线程池

    3.解析SyetemServer进程

    我们先来查看SystemServer的main函数: 
    frameworks/base/services/java/com/android/server/SystemServer.java

    public static void main(String[] args) {
            new SystemServer().run();
    }
    
    main函数中只调用了SystemServer的run函数,如下所示。
    
    private void run() {
            ...
                System.loadLibrary("android_servers");//1
            ...
                mSystemServiceManager = new SystemServiceManager(mSystemContext);//2
                LocalServices.addService(SystemServiceManager.class, mSystemServiceManager);
            ...    
             try {
                Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "StartServices");
                startBootstrapServices();//3
                startCoreServices();//4
                startOtherServices();//5
            } catch (Throwable ex) {
                Slog.e("System", "******************************************");
                Slog.e("System", "************ Failure starting system services", ex);
                throw ex;
            } finally {
                Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
            }
            ...
        }
    View Code

    4.总结SyetemServer进程

    SyetemServer在启动时做了如下工作: 
    1.启动Binder线程池,这样就可以与其他进程进行通信。 
    2.创建SystemServiceManager用于对系统的服务进行创建、启动和生命周期管理。 
    3.启动各种系统服务。

  • 相关阅读:
    TextField 属性与注意
    as3:获取系统信息
    转:As3 优化总结,代码写法和api使用事项。
    文本编辑器制作(1):2种方案实现
    FlashBuilder编译参数
    as3 动态类库使用
    webgame:版本更新与本地缓存
    A*
    FlashBuilder方便的调试UI插件Monster Debugger
    sourcemate flex插件
  • 原文地址:https://www.cnblogs.com/ganchuanpu/p/6213435.html
Copyright © 2011-2022 走看看