理解WindowManagerService

403 阅读1分钟

WMS的职责


WMS的创建过程


WMS的重要成员

mPolicy:WindowManagerPolicy,定制窗口层级和特殊窗口类型以及关键的调度和布局。

mSessions:ArraySet,用于进程通信,每一个应用程序进程都会对应一个Session。

……

Window的添加过程(WMS部分)

  • 对所要添加的窗口进行检查,如果窗口不满足一些条件,就不会再执行下面的代码逻辑。
  • WindowToken相关的处理,比如有的窗口类型需要提供WindowToken,没有提供的话就不会执行下面的代码逻辑,有的窗口类型在需要有WMS隐式创建WindowToken。
  • WindowState的创建和相关处理,将WindowToken和WindowState相关联。
  • 创建和配置DisplayContent,完成窗口添加到系统前的准备工作。

Window的删除过程

  • 检查删除线程的正确性,如果不正确就抛出异常。
  • 从ViewRootImpl列表、布局参数列表和View列表中删除与V对应的元素。
  • 判断是否可以直接执行删除操作,如果不能就推迟删除操作。
  • 执行删除操作,清理和释放与V相关的一切资源。