System Server

Android 系统服务进程 system_server,运行着各种服务,比如 PMS, AMS, WMS 等等。 该进程是启动时,由 Zygote 启动。

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

private static Runnable forkSystemServer(String abiList, string socketName,        ZygoteServer zygoteServer) {    ......    String args[] = {        ......        "com.android.server.SystemServer"    };    ......    pid = Zygote.forkSystemServer(...)    if (pid == 0) {        ......        zygoteServer.closeServerSocket();        return handleSystemServerProcess(parsedArgs);    }    return null;}

frameworks/base/services/java/com/android/server/SystemServer.java

public static void main(String[] args) {    new SystemServer().run();}private void run() {    ......    // Initialize native services.    System.loadLibrary("android_servers");    // Check whether we failed to shut down last time.    performPendingShutdown();    // Initialize the system context    createSystemContext();    // Create the system service manager.    mSystemServiceManager = new SystemServiceManager(mSystemContext);    mSystemServiceManager.setStartInfo(...);    LocalServices.addService(SystemServiceManager.class, mSystemServiceManager);    // prepare the thread pool for init tasks that can be parallelized    SystemServerInitThreadPool.get();    // Start services.    try {        traceBeginAndSlog("StartServices");        startBootstrapServices();        startCoreServices();        startOtherServices();        SystemServerInitThreadPool.shutdown();    } catch (Throwable ex) {        ...    } finally {        traceEnd();    }    // Loop forever.    Looper.loop();    throw new RuntimeException("Main thread loop unexpectedly exited");}private void startBootstrapService() {    Installer installer = mSystemServiceManager.startService(Installer.class);    mSystemServiceManager.startService(DevicesIdentifiersPolicyService.class);    mActivityManagerService = mSystemServiceManager.startService(ActivityManagerService.Lifecycle.class).getService();    mActivityManagerService.setSystemServiceManager(mSystemServiceManager);    mActivityManagerService.setInstaller(installer);    mPowerManagerService = mSystemServiceManager.startService(PowerManagerService.class);    mActivityManagerService.initPowerManagement();    mSystemServiceManager.startService(RecoverySystemService.class);    mSystemServiceManager.startService(LisghtService.class);    mDisplayManagerService = mSystemServiceManager.startService(DisplayManagerService.class);    mSYstemServiceManager.startBootPhase(SystemService.PHASE_WAIT_FOR_DEFAULT_DISPLAY);    mPackageManagerService = PackageManagerService.main(...);    mSystemServiceManager.startService(UserManagerService.LifeCycle.class);    ......}private void startCoreService() {    mSystemServiceManager.startService(BatterService.class);    mSystemServiceManager.startService(UsageStatsService.class);    mWebViewUpdateService = mSystemServiceManager.startService(WebViewUpdateService.class);}private void startOtherServices() {    //    VibrateService    IStorageManager    NewWorkManagementService    IpSecService    NetworkStatsService    NetworkPolicyManagerService    ConnectivityService    NsdService    WindowManagerService    SerialService    NetworkTimeUpdateService    CommonTimeManagementService    InputManagerService    TelephonyRegistry    ConsumerIrService    MmsServiceBroker    HardwarePropertiesManagerService}

更多相关文章

  1. Android学习笔记之mainfest文件中android属性
  2. android工程下轻松运行java main程序
  3. Android学习笔记(九)之Android(安卓)获取正在运行的Activity
  4. android的Services生命周期和使用方法
  5. Android(安卓)进程级别 和 oom_adj对应关系
  6. 模拟android访问服务器
  7. Android—复选框和单选框使用
  8. android客户端访问网络工具类
  9. 模拟android访问服务器

随机推荐

  1. Volley二次封装,实现网络请求缓存
  2. android addJavascriptInterface 不能生
  3. Android不同分辨率的Drawable资源配置
  4. Android下在onCreate方法中获取TextView
  5. Windows下,Ant自动化编译Android项目具体
  6. Android高级的总结
  7. 【Android(安卓)高性能音频】AAudio 音频
  8. Android(安卓)中自定义ContentProvider与
  9. Android(安卓)流式布局(标签效果)
  10. Android(安卓)ISurface PostBuffer 处理