0%

(07)2021.12.23-WMS功能讲解---colin老师

一、MS启动和重要属性

WMS 的职责一览如下图所示:

WMS职责

形象的比喻就是,各个 ViewRoot 是演员的动作和表情,WMS 就是导演,负责舞台效果,演员站位,SurfaceFlinger 就是摄像机,捕捉当前画面,然后呈现给观众。

这里有个隐藏的彩蛋:Handler 的 runWithScissors 方法,这个方法是系统隐藏的,不让我们正常调用,这里可能引发出一个面试题:如何在子线程通过 Handler 向主线程发送一个任务,并等主线程处理完这个任务后,再继续执行子线程的后续内容?

这时候就可以借助 runWithScissors() 方法。其原理也是 wait 和 notify 来实现

二、Surface创建过程

在 ViewRootImpl 创建时会 new 一个 Surface 。Android 中每个 Activity 都有一个画布(在应用端叫做 Surface ,在SurfaceFlinger 端叫做 Layer)

三、Surface 写入数据

略过,以及后面的《加窗口流程》、《件输入原理》都忽略,听着想睡觉,后续听

谢谢你的鼓励