android8.0 Launcher 源码(3)---Launcher的启动流程

Launcher启动流程分析
我们知道android系统是运行在Linux内核上,整个launcher的启动流程如图所示,接下来我们一步一步进行分析。

在这里插入图片描述
【init进程】
Linux内核启动后巡行的第一个进程是init。这个进程是一个守护进程。生命周期贯穿整个Linux内核 运行的始终。
我们知道android系统是运行在Linux内核上的所以google实现了android系统的init进程。

init进程主要做了三件事:
创建一些文件夹并挂在设备
初始化和启动属性服务
解析init.rc配置文件并启动zygote进程
【Zygote孵化器】
创建JavaVm(java虚拟机),应用程序进程,运行系统的关键服务,systemservice进程
它是通过fock(复制进程)的形式来创建应用程序和systemservice进程
sygote在启动时会创建javaVm,所以fock创建的应用进程和systemserver进程内部可以获取一个javaVm的实例拷贝。

Zygote孵化器做了什么:
创建AppRuntime并调用start方法,启动zygote进程。
创建JavaVM并为JVM注册JNI。
通过JNI调用zygoteInit的main函数进入zygote的Java框架层
通过registerzygotes


版权声明:本文为baidu_41666295原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。