Android R WindowManagerService模块(1) WMS整体架构及启动过程(1) ...

打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3045

Android系统中,WindowManager(以下简称WMS)负责统统窗口的管理,窗口可以理解为屏幕上的各种显示区域,如状态栏、Activity、锁屏…对于WMS来说,都是一个详细的窗口实例。从这篇文章开始,将会对WindowManager模块进行整理总结。
1.WMS架构

在WindowManager中,以容器+树结构的形式对窗口进行管理,最顶层容器为ConfigurationContainer,它是全部容器的父容器,各个容器继续关系如下:

上图中包罗了WMS中的全部容器,各个子容器含义如下:

  • ConfigurationContainer:最顶层容器,界说了多个Configuration对象,以及提供了用来构造各容器层级的公共逻辑;
  • WindowProcessController:用于和AMS中的ProcessRecord进行通讯,当ProcessRecord中对应用进程作出调整后,通过WindowProcessController和WM进行通信;
  • WindowContainer:作为可以保存窗口类父类,界说了用于操作窗口的全部公共方法;
  • RootWindowContainer:窗口容器在树结构中的根节点;
  • DisplayContent:作为RootWindowContainer的子节点,用于管理同一个逻辑屏的窗口;
  • DisplayChildWindowContainer:DisplayContent中的全部子节点的父类;
  • NonAppWindowContainers:继续于DisplayChildWindowContainer,主要保存非来自应用的WindowToken;
  • WindowContainers:只包罗一个子节点——DisplayArea.Root,大部门窗口都会保存在这个容器中;
  • DisplayArea:用于对DisplayContent中的节点进行分组管理,主要分为了三类;
  • Root:DisplayArea的子类,该容器作为DisplayContent中最顶层的显示区域,用来保存Tokens、TaskDisplayArea、ImeContainer容器;
  • TaskDisplayArea:DisplayArea的子类,此类容器用于管理Task;
  • Tokens:DisplayArea的子类,该容器用来保存正常窗口的WindowToken;
  • ImeContainer:Tokens的子类,该容器用来保存IME窗口的WindowToken;
  • Task:用来保存ActivityRecord,即我们常说的"任务";
  • ActivityStack:Task的子类,用来管理处于同一个栈的Activity,特殊栈可以保存Task;
  • WindowToken:用来管理窗口,多个窗口可以被一个WindowToken进行管理;
  • ActivityRecord:继续于WindowToken,表示ActivityStack中的一个Activity实例;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表