美文网首页Android
Android系统服务-WMS

Android系统服务-WMS

作者: 阿拉贡居民 | 来源:发表于2021-12-07 15:44 被阅读0次

WMS

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

主要功能
  • Surface管理。为所有窗口分配Surface,客户端向WMS添加一个窗口的过程,其实就是WMS为其分配一块Suiface的过程,一块块Surface在WMS的管理下有序的排布在屏幕上。Window的本质就是Surface。
  • 管理窗口的显示顺序、尺寸、位置, 最终都会反馈SurfaceFlinger。
  • 窗口动画, 包括进入,退出动画
  • 输入系统中转站:WMS是派发系统按键和触摸消息的最佳人选,当接收到一个触摸事件,它需要寻找一个最合适的窗口来处理消息,而WMS是窗口的管理者,系统中所有的窗口状态和信息都在其掌握之中,完成这一工作不在话下。


    wms
什么是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之间传递

相关文章

网友评论

    本文标题:Android系统服务-WMS

    本文链接:https://www.haomeiwen.com/subject/kfioxrtx.html