原文地址

  本文中的所有内容大部分来源于网络资料,如有侵权请联系本人修改或删除,请大家多多支持原创!非常感谢!

渲染框架图

Android_vsync.webp

通过对源码的解析,需要理解上图中的每个流程,从而了解整个渲染体系。比如屏幕刷新机制SurfaceFlinger硬件绘制软件绘制RenderThread等内容。

前置知识

系统启动流程

首先需要对 Android 启动流程进行了解,这里针对此内容模块进行介绍,详细可移步Android-14-源码分析之启动流程

  1. init 进程

    在 Android 开机到 Linux 内核启动后,第一件事情就是启动 init 进程。它是第一用户空间进程,进程号为1。
  2. SufaceFlinger 进程
    由 init 进程启动,职责包括“请求/监听/分发 vsync 信号”、”合成与送显“。
  3. Zygote 进程
    由 init 进程启动,应用程序进程与 SystemServer 进程由它通过 fork 进行创建。同时,它创建了虚拟机,所以由它 fork 而来的应用程序进程和 SystemServer 可以在内部获取一个虚拟机副本。
  4. WindowManagerServcie 系统服务
    SystemServer 进程创建的系统服务,职责包括:
    窗口管理:例如窗口的大小、层级
    Sufrace 管理: Surface 是 App 获取渲染缓冲区的媒介。
  5. Launcher 进程(桌面)
    由 AMS 启动,并通过 Zygote fork 创建进程。它的职责包括“显示系统已经安装的应用程序”,”启动其他应用程序进程“。