1.2、nativeForkSystemServer() 的JNI层实现 3
1.3、forkAndSpecializeCommon( ) 4
二、handleSystemServerProcess()方法 6
system_server进程
system_server属于ApplicationFramework层(框架层)。system_server进程开启时,就会初始化AMS,同时,会加载本地系统的服务库,创建系统上下文Context,创建ActivityThread及开启各种服务等等。而在这之后,就会开启系统的Launcher程序,完成系统界面的加载与显示。
注意,Android中所有系统服务都是由system_server进程启动,如果该进程异常退出,就是整个Java世界的末日。
system_server的启动入口函数是startSystemServer(),它位于ZygoteInit.java中。下面开始依次分析system_server进程:
一、system_server的创建
Path:./frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
入口函数源码如下:
/**
* Prepare the arguments and fork for the system server process.
*/
private static boolean startSystemServer(String abiList, String socketName, ZygoteServer zygoteServer)
throws Zygote.MethodAndArgsCaller, RuntimeException {
.........
/* Request to fork the system server process */
pid = Zygote.forkSystemServer( //调用fork函数创建子进程system_serve
parsedArgs.uid, parsedArgs.gid,
parsedArgs.gids,
parsedArgs.debugFlags,
null,
parsedArgs.permittedCapabilities,
parsedArgs.effectiveCapabilities);
} catch (IllegalArgumentException ex) {....... }
/* For child process */
if (pid == 0) { //pid如果为0,说明在子进程system_serve中