Android再进阶之WindowManagerService简介

WindowManagerService(WMS)作为系统中重要的服务,有了解的必要。

创建比较难解释,直接介绍它的成员。

  1. WMS的重要成员
  • mPolicy:WindowManagerPolicy。它是WMP(WindowManagerPolicy)类型的变量,WMP是窗口策略的接口类,用来定义一个窗口策略所要遵循的通用规范,并提供了WindowManager所有的特定的UI行为。
  • mSessions:ArraySet。它的元素类型为Session,主要用于进程间通信,其它的应用程序想要和WMS进程进行通信就需要经过Session。
  • mWindowMap:WindowHashMap。key的值是IBinder,value的值是WindowState(用于保存窗口的信息),在WMS用它来描述一个窗口。它用来保存窗口的集合。
  • mFinishedStarting:ArrayList。元素类型为AppWindowToken,它的作用:窗口令牌,检查权限;将一个组件的窗口集合起来,方便管理。它用来存储已经启动的窗口。
  • mResizingWindows:ArrayList。元素类型WindowState,用来存储正在调整大小的窗口的列表。
  • mAnimator:WindowAnimator。用于管理窗口的动画以及特效动画。
  • mH:H。系统的Handle类,用于将任务加入主线程的消息队列中。
  • mInputManager:InputManagerService。InputManagerService类型变量,输入系统的管理者,它会对触摸事件进行处理,寻找一个最合适的窗口来处理触摸反馈信息。
  1. Window的添加过程。
  • 对所要添加的窗口进行检查,如果窗口不满足一些条件,就不会执行接下来的代码。
  • WindowToken相关的处理,比如有的窗口类型需要提供WindowToken,没有提供的话就不会执行接下来的代码逻辑。
  • WindowState的创建和相关处理,将WindowToken和WindowState相关联。
  • 创建和配置DisplayContent,完成窗口添加到系统前的准备工作。
  1. Window的删除过程。
  • 检查删除线程的正确性,如果不正确就抛出异常。
  • 从ViewRootImpl列表、布局参数列表和View列表中删除与V对应的元素。
  • 判断是否可以直接执行删除操作,如果不能就推迟删除操作。
  • 执行删除操作,清理和释放与V相关的一切资源。

你可能感兴趣的:(Android再进阶,android,WMS)