美文网首页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