SystemServer是Zygote启动的第一个进程,其主要的作用是启动各种系统服务,比如ActivityManagerService,PackageManagerService,WindowManagerService等服务。
SystemServer.run()
1. 设置全局属性,如DVM参数,Binder属性,SystemServer设定所有binder thread以foreground的优先级执行,并且特别设定binder thread number的值为31,正常APP的binder thread为15。
2. 创建一个system context,此时会调用ActivityThread.systemMain()创建出一个ActivityThread,同时在ActivityThread attach过程中调用ContextImpl:createSystemContext()真正创建出system context。
3. startBoostrapServices如ActivityManagerService,PowerManagerService,PackageManagerService等。
4. startCoreService如BatteryService等。
5. startOtherServices如TelephonyRegistry、NetworkManagementService等。
6. 调用ActivityManagerService.systemReady启动SystemUi。
7. 通过Loop.loop()进入无限循环等待message。
[参考资料]
http://blog.csdn.net/hu3167343/article/details/38375167
[深入理解Android卷一全文-第四章]深入理解zygote
http://blog.csdn.net/innost/article/details/47207845