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

  1. DisplayArea:用于对DisplayContent中的节点进行分组管理,主要分为了三类;
  2. Root:DisplayArea的子类,该容器作为DisplayContent中最顶层的显示区域,用来保存Tokens、TaskDisplayArea、ImeContainer容器;
  3. TaskDisplayArea:DisplayArea的子类,此类容器用于管理Task;
  4. Tokens:DisplayArea的子类,该容器用来保存正常窗口的WindowToken;
  5. ImeContainer:Tokens的子类,该容器用来保存IME窗口的WindowToken;
  6. Task:用来保存ActivityRecord,即我们常说的"任务";
  7. ActivityStack:Task的子类,用来管理处于同一个栈的Activity,特殊栈可以保存Task;
  8. WindowToken:用来管理窗口,多个窗口可以被一个WindowToken进行管理;
  9. ActivityRecord:继承于WindowToken,表示ActivityStack中的一个Activity实例;
  10. WallpaperWindowToken:继承于WindowToken,壁纸窗口比较特殊,因此由WallpaperWindowToken进行管理;
  11. WindowState:窗口对象实例;

DisplayArea是Android R上新添加的容器,目的就是将复杂的窗口层级管理简单化、低耦合。

而在树结构中,各个容器结构如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以看到,在树结构中,根节点为RootWindowContainer,叶子节点为WindowState。 正是通过这种结构,WMS中将系统中所有的窗口显示管理得井井有条,并将所有窗口以Surface的形式送到SurfacaFlinger中进行合成和显示。

2.WMS启动流程

接下来我们看下WM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值