前言
这是一篇关于AndroidOS的zygote进程的学习记录,zygote作为盘古开天辟地,许多重要的进程(以及应用进程)都是从这里“孵化”出来的,希望能够通过画图将其系统直观地呈现出来。
zygote是由init进程创建出来的,详见上一篇AndroidOS之init进程时序图
![](https://img.haomeiwen.com/i12165801/ac25714ffa8a361a.png)
总结:
他的执行程序app_process main()由init进程启动,将该进程的名称设置为zygote。
它主要做了以下工作:
1.调用AndroidRuntime::start方法,使用JNI向Java中注册了许多重要的native方法。
2.通过JNI调用ZygoteInit.java的main函数。(通过JNI调用java)
3.为IPC创建本地socket服务器。(RunSelectLoop方法一直等待socket客户端连接,例如:AMS执行创建应用进程时, startProcessLocked->Process:startViaZygote)
4.fork-启动SystemServer进程。
- 4.1 为IPC创建线程池并打开Binder驱动。
- 4.2 很多重要的服务已经在这里启动了(三大类)!
-
系统关键服务(System critical services):
SSM/Installer/AMS/PowerMangerService/
DisplayManagerService/
PackageManagerService/
UserManagerService -
核心服务(Core services):
LightsService/BatteryService
UsageStatsService/UsageStatsManagerInternal
WebViewUpdateService -
其他服务(Other services):
WindowManagerService/ContentService
UsbService/InputManagerService
VibratorService/AudioService
BluetoothManagerService/NetworkManagementService...
-
下一篇启动应用程序
网友评论