WMS总体框架
目录
1 WMS总体架构........................................................................................ 3
2 WMS服务启动流程................................................................................ 5
3 WMS初始化.......................................................................................... 14
4 WMS窗口管理模式.............................................................................. 17
5 Window窗口的添加.............................................................................. 19
5.1 Activity添加窗口的过程.................................................................................................... 20
5.2 系统窗口添加过程............................................................................................................ 24
5.3 添加子窗口...................................................................................................................... 28
5.4 ViewRootImpl与WMS的关系........................................................................................... 30
5.5 WMS调用addwindow........................................................................................................ 34
6 relayoutWindow..................................................................................... 37
1 WMS总体架构
全称WindowManagerService,是Android的一个重要的系统服务。主要是用来负责管理window,具体包括window的添加、删除、大小、方向、位置、z-order、动画、焦点等,和输入事件的中转站(对按键消息的特殊处理)。它的职责有很多,主要有以下几点:
窗口管理
WMS是窗口的管理者,它负责窗口的启动、添加和删除,另外窗口的大小和层级也是由WMS进行管理的。窗口管理的核心成员有DisplayContent、WindowToken和WindowState、WindowContainer
窗口动画
窗口间进行切换时,使用窗口动画可以显得更炫一些,窗口动画由WMS的动画子系统来负责,动画子系统的管理者为WindowAnimator。涉及动画的主要类为:WindowStateAnimator 、SurfaceAnimationRunner、SurfaceAnimationThread
输入系统的中转站
通过对窗口的触摸从而产生触摸事件,InputManagerService(IMS)会对触摸事件进行处理,它会寻找一个最合适的窗口来处理触摸反馈信息,WMS是窗口的管理者,因此,WMS“理所应当”的成为了输入系统的中转站,这部分的逻辑在Android10上发生了变化,传递窗口信息的顺序变为:WMS->SufracFlinger->IMS
Surface管理
窗口并不具备有绘制的功能,因此每个窗口都需要有一块Surface来供自己绘制。为每个窗口分配Surface是由WMS来完成的。
WMS的职责可以简单总结为下图:
WMS在Android体系中的作用如下图所示:
更多相关文章
- android 实现ListView中添加RaidoButton单选
- React Native跳转android原生界面
- activity添加切换动画之后出现的黑色背景问题
- 【黑马Android】(03)学生管理系统/动态刷新界面
- 36 Android(安卓)Activity跳转动画 获取当前版本
- android添加购物车动画实现
- 简单的四种动画Demo
- 安卓如何关闭软键盘?
- Android--等待loading