Android Framework之Zygote

什么是Zygote?

Zygote中文翻译为“受精卵”,正如其名,它主要用于孵化子进程。是 Android 系统中的一个核心进程,是所有 Android 应用程序进程的父进程,它在系统启动时被初始化。Zygote 的主要任务是加载系统的核心类库(如 Java 核心库和 Android 核心库),然后进入一个循环,等待请求来创建新的 Android 应用程序进程。
当一个新的 Android 应用程序需要启动时,Zygote 会 fork 出一个新的进程,这个新的进程继承了 Zygote 的内存空间,包括已经预加载的类库。这种方式可以大大提高新进程的启动速度,因为不需要再次加载这些类库。

Zygote的启动流程有哪些?

在 init.rc 文件导入init.zygote64_32.rc文件,在init.zygote64_32.rc文件中执行class main 来启动 Zygote进程。

为什么要有Zygote?

Zygote用来作为一个开启APP进程的管理者,防止资源过度耗费;

为什么要用Socket方式启动app进程,而不用Bind呢?

因为安全,如果使用bind容易造成hook,使进程执行过程中被拦截而挂掉,但是使用Socket的话,Zygote作为一个公共服务类,可以做到一对多的模式(Client-Service模型)。

LauncherAPP的启动流程

通过ActivityManager.getService()绑定AMS,从而获取到SystemServer进程中的AMS引用,执行startActvity()方法中Socket发送消息给Zygote,Zygote通过fork()方法执行ActivityThread.Main()来创建APP进程。通过attach读取AndroidManifest.xml中的MainActivity启动APP界面。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值