5 Window窗口的添加
WindowManager对Window进行管理,说到管理那就离不开对Window的添加、更新和删除的操作,在这里我们把它们统称为Window的操作。对于Window的操作,最终都是交由WMS来进行处理。窗口的操作分为两大部分,一部分是WindowManager处理部分,另一部分是WMS处理部分。我们知道Window分为三大类,分别是:Application Window(应用程序窗口)、Sub Windwow(子窗口)和System Window(系统窗口),对于不同类型的窗口添加过程会有所不同,但是对于WMS处理部分,添加的过程基本上是一样的, WMS对于这三大类的窗口基本是“一视同仁”的,而只是调用WindowManager的地方不同而已,如图所示:
5.1 Activity添加窗口的过程
5.1.1Activity,WindowManager,WMS之间的关系
首先介绍一下Activity,WindowManager,WMS之间的关系,如下图所示:
从上图中看到涉及到的基本概念为:先了解一下window windowmanger wms之间的关系如下:
从上图中看到,在Android开发中,Window是所有视图的载体,如Activity,Dialog和Toast的视图,我们想要对Window进行添加和删除就要通过WindowManager来操作,而WindowManager就是通过Binder与WindowManagerService进行跨进程通信,把具体的实现工作交给WindowManagerService,他们之间的类关系图如下:
5.1.2 Activity添加窗口的流程
Activity添加窗口的流程如下: