Android启动第一个应用前做了什么(简单分析)?

一. Zygote 是什么?

英文翻译过来为 `受精卵`,由此联想可见Zygote在Android 启动时候的作用为不断分裂,这也是Android平台非常基础的进程。

通俗的来讲在 Java 中,不同的虚拟机实例可以为不同的应用分配不同的内存。但如果Android系统为每一个应用启动不同的 VM 实例,就会消耗大量的内存以及时间。因此,为了克服这个问题,Android系统创造了“Zygote”。

二、启动系统时如何呢?

bootloader启动内核和init进程,init进程会分裂出很多守护进程的linux进程,这些进程处理底层硬件相关接口。

init进程会启动Zygote进程,他初始化了第一个VM并且预加载了framework和app所需的通用资源,然后它开启socket来监听请求,并且根据请求来孵化出新的VM来管理新的APP进程(这个过程是Zygote基于自身预加载的VM来孵化新的VM来管理新的APP进程

init进程启动Zygote后会启动runtime进程。Zygote会孵化出超级管理员进程-SystemServer, SystemServer会启动系统核心服务,如ActivityManagerService,硬件相关的Service等。

此时已经系统已经准备好启动第一个App进程-home进程

参考:
https://www.jianshu.com/p/a5532ecc8377
https://blog.csdn.net/dearsq/article/details/53647871
https://blog.csdn.net/turkeycock/article/details/50538971

你可能感兴趣的:(Android启动第一个应用前做了什么(简单分析)?)