316 字
2 分钟
用户点击桌面微信图标背后发生的事情

用户点击桌面微信图标背后发生的事情#

初始状态步骤:

  1. Zygote fork system_server 进程并等待Socket请求
  2. system_server 进程启动后会请求打开Launcher(桌面),此时通过Socket发送创建请求给Zygote,Zygote 收到请求后负责fork 出Launcher进程并执行它的入口函数
  3. Launcher 启动后用户就可以看到初始的界面了

用户操作: 桌面显示出来后,此时用户想打开微信,于是点击了桌面上的微信图标

  • Launcher App 收到点击请求,会执行startActivity,这个命令会通过Binder传递给system_server进程里的AMS(ActivityManagerService)模块
  • AMS 发现对应的微信进程并没有启动,于是通过Socket发送创建微信进程的请求给Zygote
  • Zygote 收到Socket请求后,fork 微信进程并执行对应的入口函数,之后就会显示出微信的界面了

image.png App进程和system_server 进程之间通信方式为Binder,而system_server和Zygote 通信方式为Socket,App进程并不直接请求Zygote做事情,而是通过system_server进行处理,system_server 记录着当前所有App 进程的状态,由它来统一管理各个App的生命周期。

整个过程如下图所示 image.png

用户点击桌面微信图标背后发生的事情
作者
强人自传
发布于
2022-07-21
许可协议
CC BY-NC-SA 4.0