概述

app_process是由frameworks\base\cmds\app_process编译而来,是启动java世界的入口程序。

在开机过程中,经由app_process启动的进程有:

  1. zygote进程
  2. system_server进程

zygote进程作用

  1. 启动system_server进程,也即system_process
  2. 裂变app进程,为每个app
  3. 其他socket事务处理

zygote三个部分

zygote运行分为三个主要部分:
1、app_process创建虚拟机,设置虚拟机属性
2、进入java世界,加载资源
3、裂变进程:启动system_server、启动app

活动图如下:
在这里插入图片描述
在代码中未看到新的进程创建新的虚拟机,按照fork机制,子进程直接继承父进程资源。在源码中有类ZygoteHooks(android-8.0.0_r1\libcore\dalvik\src\main\java\dalvik\system\ZygoteHooks.java),在进程fork后都会调用nativePostForkChild,这部分待了解,通知到哪里?做了什么?这或许和子进程继承父进程的虚拟机有关。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐