目录

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体系中的作用如下图所示:

 

更多相关文章

  1. android 实现ListView中添加RaidoButton单选
  2. React Native跳转android原生界面
  3. activity添加切换动画之后出现的黑色背景问题
  4. 【黑马Android】(03)学生管理系统/动态刷新界面
  5. 36 Android(安卓)Activity跳转动画 获取当前版本
  6. android添加购物车动画实现
  7. 简单的四种动画Demo
  8. 安卓如何关闭软键盘?
  9. Android--等待loading

随机推荐

  1. Android(3) 注册界面点击返回登录界面并
  2. Android之反射机制与JSON解析
  3. Android(安卓)ListView根据项数的大小自
  4. Android(安卓)installed app, never used
  5. android 耳机左右声道接反,软件如何修正
  6. android调用平台功能
  7. android如何限制只能输入指定的字符
  8. android framework service开发原理,以震
  9. Android:intent用法实例
  10. Android(安卓)Edittext 显示光标 获取焦