WMS
文章平均质量分 97
WMS主流程
服装学院的IT男
这个作者很懒,什么都没留下…
展开
-
【Android 13源码分析】窗口的移除(removeWindow)
忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。– 服装学院的IT男本篇已收录于欢迎一起学习讨论Android应用开发或者WMSV:WJB6995。原创 2024-09-30 15:50:50 · 1096 阅读 · 0 评论 -
【Android 14源码分析】WMS-窗口显示-第一步:addWindow
本篇开始真正看 addWindow 流程,首先从结果上对比下应用启动后窗口的区别来确认本篇的目的:Task其中 Task 和 ActivityRecord 是如何挂载上去的在【Activity启动流程】已经介绍了,当前要分析的 addWindow 流程最重要的目标就是分析窗口对应的 WindowState 是如何创建并且挂载到窗口树中的。也就是这一变化:应用端 Activity 执行到 onResume 说明 Activity 已经可见,下面就需要处理可见的内容。原创 2024-09-30 15:43:07 · 1061 阅读 · 0 评论 -
【Android 14源码分析】WMS-窗口显示-第三步:finishDrawingWindow
目前窗口的显示到了最后一步。在 addWindow 流程中,创建挂载了 WindowState在 relayoutWindow 流程为这个窗口创建了 Surface 并且还计算好了这个窗口的大小和在屏幕上的位置,并把窗口的 Surface 状态设置为了 DRAW_PENDING。这一步执行完后,应用端就可以开始绘制 View 树了,绘制完成后,需要把内容显示到屏幕上,也就是现在这个 Surface ,这一步就是本篇分析的内容:finishDrawingWindow 流程。原创 2024-09-30 15:38:36 · 733 阅读 · 0 评论 -
【Android 14源码分析】WMS-窗口显示-第二步:relayoutWindow -2
忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。– 服装学院的IT男本篇已收录于欢迎一起学习讨论Android应用开发或者WMSV:WJB6995。原创 2024-09-30 15:38:19 · 945 阅读 · 0 评论 -
【Android 14源码分析】WMS-窗口显示-第二步:relayoutWindow -1
回顾下窗口显示的三个流程:addWindow流程为应用端创建对应的 WindowState 并挂载relayoutWindow流程addWindow 流程后执行后,屏幕上就有新的 WindowState 添加了,WMS 也需要对屏幕上所有的窗口执行一遍 layout 来确定各个窗口所在的位置。而应用端想要绘制 UI 数据,则也需要知道自己的窗口大小,位置信息,并且还需要一个 Surface 来承载 UI 数据。为窗口申请 Surface 并返回给应用端计算返窗口的大小,位置信息并返回给应用端。原创 2024-09-30 15:38:04 · 978 阅读 · 0 评论 -
【Android 14源码分析】WMS-窗口显示-流程概览与应用端流程分析
WMS 负责管理设备上所有的 Window ,所以应用想显示一个 Window 则要通过 WMS 来完成。而 WMS 毕竟还是上层,窗口的内容要显示到屏幕上,还需要 SurfaceFlinger 来处理。应用端: 控制其内部的窗口的添加及 UI 绘制逻辑WMS 模块: 作为系统窗口管理模块,处理应用端的窗口显示逻辑应用端与 WMS 通信通过匿名 Binder -> Session 完成。原创 2024-09-30 15:37:45 · 1179 阅读 · 0 评论 -
【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树
下面2个图来自Unity3d官网开发文档:们玩的王者荣耀,原神等游戏的开发,都是类似在这么一个3D场景下进行的,开发者将使用3D建模工具来创建地形、建筑、植被等地图元素,并通过材质和贴图来增强地图的视觉效果。比如这张图片里放了3个颜色的柱子。除了这些物体外,可以看到还有一个摄像机(Camera),它是用来捕捉画面的, 毕竟手机屏幕是2D的,简单来说这个摄像机能捕捉到的画面就是我们手机屏幕上显示的内容,比如这张图片捕捉到的画面是右下角的内容。原创 2024-09-15 13:13:04 · 1066 阅读 · 0 评论 -
【Android 13源码分析】WindowContainer窗口层级-4-Layer树
在安卓源码的设计中,将将屏幕分为了37层,不同的窗口将在不同的层级中显示。对这一块的概念以及相关源码做了详细分析,整理出以下几篇。本篇为第四篇,前面三篇已经将Android窗口树介绍完了,但是我们知道安卓真正控制显示的是在SurfaceFlinger层,难道说SurfaceFlinger层也有这么一个窗口树吗?如果有,Framework层构建窗口树的代码这么复杂,难道SurfaceFlinger也有这么一段复杂的逻辑吗?原创 2024-09-15 13:15:03 · 1327 阅读 · 0 评论 -
【Android 13源码分析】WindowContainer窗口层级-3-实例分析
在安卓源码的设计中,将将屏幕分为了37层,不同的窗口将在不同的层级中显示。对这一块的概念以及相关源码做了详细分析,整理出以下几篇。当前为第三篇,以应用窗口和系统窗口2大类型窗口的挂载为例介绍窗口是如何挂载到层级树中的。这篇看完对AOSP中整个窗口树就有了比较完整的了解。原创 2024-09-15 13:14:36 · 1265 阅读 · 0 评论 -
【Android 13源码分析】WindowContainer窗口层级-2-构建流程
拥有特征的层级: 0-31特征描述: 支持窗口缩放的一块区域,一般是通过辅助服务进行缩小或放大拥有特征的层级: 0-14 16 18-23 26-35特征描述:隐藏剪切区域,即在默认显示设备上隐藏不规则形状的屏幕区域,比如在代码中打开这个功能后,有这个功能的图层就不会延伸到刘海屏区域。OneHanded拥有特征的层级:0-23 26-32 34-35特征描述:表示支持单手操作的图层,这个功能在手机上还是挺常见的。原创 2024-09-15 13:14:10 · 861 阅读 · 0 评论