Android

Android系统服务-WMS

2021-12-07  本文已影响0人  阿拉贡居民

WMS

WindowManagerService服务的实现是相当复杂的,它要管理的整个系统所有窗口的UI,而在任何一个系统中,窗口管理子系统都是极其复杂的。

主要功能
什么是Window

“Window”表明它是和窗口相关的,“窗口”是一个抽象的概念,从用户的角度来讲,它是一个“界面”;从SurfaceFlinger的角度来看,它是一个Layer,承载着和界面有关的数据和属性;从WMS角度来看,它是一个WIndowState,用于管理和界面有关的状态。
在《深入理解Android内核设计思想》一书中看到一个比喻非常好,整个界面就像由N个演员参与的话剧:SurfaceFling是摄像机,它只负责客观的捕捉当前的画面,然后真实的呈现给观众;WMS就是导演,它要负责话剧的舞台效果、演员站位;ViewRoot就是各个演员的长相和表情,取决于它们各自的条件与努力。可见,WMS与SurfaceFling的一个重要区别就是——后者只做与“显示”相关的事情,而WMS要处理对输入事件的派发。

WMS框架
wms框架.png
Activity, AMS,WMS,IMS关系
gui系统
Activity,Window,View,WMS关系
gui框架
Activity,AMS, WMS数据结构关系
Activity,AMS, WMS数据结构关系
WMS简单类图
WMS简单类图
WMS稍微完整类图
WMS稍微完整类图
WMS启动流程
启动流程
Activity添加Window流程
添加窗口过程
Activity创建Surface流程
surface创建
WMS图层z-order计算过程
wms z-order计算过程.png

参考博客,其他相关流程
Activity添加Window流程
Activity创建Surface流程
窗口大小和位置(X轴和Y轴)的计算过程
窗口Z轴位置的计算和调整过程
Android Token在APP,AMS,WMS之间传递

上一篇下一篇

猜你喜欢

热点阅读