1、WMS的职责,主要有以下几点:
- 窗口管理:WMS是窗口的管理者,它负责窗口的启动、添加和删除,另外窗口的大小和层级也是由WMS进行管理的。窗口管理的核心成员有DisplayContent、WindowToken和WindowState
- 窗口动画:窗口间进行切换时,使用窗口动画可以显得更炫一些,窗口动画由WMS的动画子系统来负责,动画子系统的管理者为WindowAnimator
- 输入系统的中转站:通过对窗口的触摸而产生触摸事件,InputManagerService(IMS)会对触摸事件进行处理,它会寻找一个最合适的窗口来处理触摸反馈信息,WMS是窗口的管理者,它作为输入系统的中转站再合适不过
- surface管理:窗口并不具备绘制的功能,因此每个窗口都需要有一块surface来供自己绘制,为每个窗口分配surface是由WMS来完成的
2、WMS的创建过程
WMS创建涉及3个线程,分别是system_server、android.display和android.ui
三个线程之间的关系分为三个步骤来实现: