Android知识架构构建WMS系列产品

lxf2023-12-14 08:20:02

Android知识架构构建

WMS系列产品

一 简述

WMS 的复杂性不下于 AMS,乃至因为从 Android 10 逐渐,谷歌搜索为支持双屏显示,小窗模式,全面屏手势等因素,现在市面上对 WMS 的相关资料与最新 Android 系统软件拥有很大的进出,因此在谈到 WMS 以前,我们有必要了解一下在最新的 Android 系统内,WMS 总体框架

从 Android 10 逐渐,谷歌搜索对 WMS 架构展开了改动,现在市面上常常看到的 ActivityStack,在 Android 12 里已经被删除。

二 Android 对话框架构

如下图所示,便是 WMS 总体架构的继承关系,顶部的类是 WindowContainer,自然,在 WindowContainer 以上还有一个插口 ConfigurationContainer,让我们简易掌握就可以,如今我们从 WindowContainer 刚开始先后详细介绍

Android知识架构构建WMS系列产品

2.1 ConfigurationContainer

首先是 ConfigurationContainer,它是一个插口没有什么好说的,重新定义了一些函数公式让派生类的重新写过。

[frameworks/base/services/core/java/com/android/server/wm/ConfigurationContainer.java]
public abstract class ConfigurationContainer<E extends ConfigurationContainer> {

2.2 WindowContainer

[frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java]
class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<E>
        implements Comparable<WindowContainer>, Animatable, SurfaceFreezer.Freezable {

WindowContainer 是 ConfigurationContainer 的派生类,官方详细介绍是为了能直接储存对话框或者通过结构分析方式的他的儿子级储存窗口类界定通用功能。

说实话便是,WindowContainer 是 Android 对话框智能管理系统里的父类,它表明对话框系统中通用性器皿。 换句话说,别的每一个对话框,都就是它的派生类。它重新定义了对话框容器普遍个人行为。

2.3 RootWindowContainer

[frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.java]
class RootWindowContainer extends WindowContainer<DisplayContent> implements DisplayManager.DisplayListener

RootWindowContainer 是 WindowContainer 的派生类之一,一句话概括,便是这是机器设备须根器皿。

详尽地说,这是对话框最上方的器皿,Android 便以树结构的形式,向 RootWindowContainer 中加入别的对话框,这是对话框须根。

RootWindowContainer 所提供的作用有:Activity,Dialog 等 UI,动漫,键入事情,聚焦点,可视性等

2.4 Task

[frameworks/base/services/core/java/com/android/server/wm/Task.java]
class Task extends WindowContainer<WindowContainer> 

假如看了以前有关 AMS 内容,那就应该对 Task 很了解了,简单的说,Task 可以理解为 Activity 的栈。因此对于每一个 Activity 都对应的是一个 Task,可是对于每一个 Task,它能够相匹配好几个 Activity

Task 针对 Activity 拥有如下所示好多个功效:对话框管理方法(尺寸,情况,可视性),生命周期管理,最近浏览的屏幕等

2.5 ActivityRecord

ActivityRecord 便是 Android 系统内 Activity 的案例了,因为里面保留了 Activity 每一个信息内容。

2.6 WindowToken

[frameworks/base/services/core/java/com/android/server/wm/WindowToken.java]
class WindowToken extends WindowContainer<WindowState> {

有关 WindowToken,官方界定如下所示:

WindowManager 中一组有关的窗口器皿。一般这是一个 AppWindowToken, 这是用于表明窗口 Activity 的返回值。针对嵌入对话框,有一个为父对话框建立的 WindowToken 来处理他的儿子对话框。

说实话便是,WindowToken 将一个运用的窗口组成到了一起,无论你是 Activity,或是电脑输入法或者其它的窗口,都是属于同一个 WindowToken,那你们便会放到同一个对话框中,具体表明逻辑性,会根据自己这一窗口 ZOrder 进行筛选。而 WindowToken 名称里的 Token 这一字段名,表达了它唯一性,以前我们说 ActivityRecord 里的 Token 确保了 Activity 的唯一性,ActivityRecord 里的 Token 便是传承自 WindowToken 的,而 ActivityRecord 里的那一个 token 自变量,本身就是成员变量 WindowToken 里的。

还有一点,最最最重要的,便是为何你可以将 Activity,DIalog,Toast 表明在手机里,就因为这个 WindowToken,仅有 WindowToken 合理合法,系统软件才能将你的对话框展示在设备中。

2.7 WindowState

[frameworks/base/services/core/java/com/android/server/wm/WindowState.java]
class WindowState extends WindowContainer<WindowState> implements WindowManagerPolicy.WindowState,
        InsetsControlTarget {

WindowState 类表明窗口系统状态。

详尽地说,WindowState 里保留了窗口每个特性,比如其尺寸、位置和方向可视性。

2.8 WallpaperWindowToken

[frameworks/base/services/core/java/com/android/server/wm/WallpaperWindowToken.java]
class WallpaperWindowToken extends WindowToken {

WallpaperWindowToken 是一种专项计划的窗口动态口令,用以管理方法墙纸对话框。

2.9 DisplayArea

[frameworks/base/services/core/java/com/android/server/wm/DisplayArea.java]
public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> {

DisplayArea 表明显示屏上的一个虚似地区,能够在这其中机构及管理对话框。用以将 WindowContainer 分类到 DisplayContent 中的器皿,并依据它们种类对这些进行筛选。 DisplayAreas 由 DisplayAreaPolicy 管理方法, 表明地区能够嵌入。

DisplayAreas 有三种类型,以保证对话框具备正确 Z 次序:

  • BELOW_TASKS:只有包括坐落于 Task 下方 DisplayAreas 和 WindowTokens。
  • ABOVE_TASKS:只有包括坐落于 Task 基础上的 DisplayAreas 和 WindowTokens。
  • ANY:能够包括一切类别的 DisplayArea,及其一切类别的 WindowToken 或 Task 器皿。

2.10 DisplayArea .Dimmable

DisplayArea.Dimmable 表明能够发暗的器皿,可用作屏幕亮度调节。

2.11 DisplayArea.Token

DisplayArea.Token 表示的是与 DisplayArea 关联 Token,是 WindowToken 类派生类,DisplayArea.Token 用以唯一标识及管理特殊 DisplayArea 状态。

2.12 RootDisplayArea

RootDisplayArea 表明对话框智能管理系统上显示地区须根器皿。

2.13 DisplayAreaGroup

DisplayAreaGroup 表明对话框智能管理系统里的一组表明地区。

2.14 DisplayContent

DisplayContent 表明显示屏相匹配的具体内容特性。 它负责特殊显示器对话框和对策。

三 对话框

WindowManagerPolicy

WindowManagerPolicy 是 Android 对话框智能管理系统中的一个插口,它重新定义了管理方法对话框、解决键入事情及其和系统 UI 互动的方案和个人行为。

WindowManagerPolicy 插口只有一个实现类便是 PhoneWindowManager。

WindowManagerPolicy 的一些工作职责包含:

WindowManagerPolicy 关键重新定义了对话框管理方法的思路,比如

  • 对话框在屏幕上规划布局部位
  • 键入事件处理和派发
  • 对话框关注的焦点变动解决
  • 智能管理系统UI的思路,比如通知栏和导航条

WindowManagerPolicy 插口被设计成平台无关的,而且现阶段 WindowManagerPolicy 只有一个派生类,便是 PhoneWindowManager。

WMS 系统软件涉及到内容比较多,后续会再次填补。

本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!