1 前言

​ 如图所示,ConfigurationContainer 是 AMS 家族的重要基类;WindowContainer 继承自 ConfigurationContainer,是 WMS 家族的重要基类。

​ 本文主要介绍 ConfigurationContainer、Configuration、WindowConfiguration、ConfigurationContainerListener。

2 源码

2.1 WindowConfiguration、Configuration、ConfigurationContainerListener

(1)WindowConfiguration

private Rect mAppBounds

private int mWindowingMode

private int mActivityType

(2)Configuration

public final WindowConfiguration windowConfiguration = new WindowConfiguration()

public float fontScale;

//Mobile Country Code
public int mcc //Mobile Network Code
public int mcc public Locale locale public boolean userSetLocale public int screenWidthDp public int screenHeightDp public int densityDpi

(3)ConfigurationContainerListener

void onOverrideConfigurationChanged(Configuration overrideConfiguration)

2.2 ConfigurationContainer

​ 源码地址→/frameworks/base/services/core/java/com/android/server/wm/ConfigurationContainer.java

(1)类定义

//E为当前节点的子节点类型
public abstract class ConfigurationContainer<E extends ConfigurationContainer>

(2)主要属性

//容器配置
private Configuration mFullConfiguration = new Configuration() //被覆盖的容器配置
private Configuration mOverrideConfiguration = new Configuration() //被合并的容器配置
private Configuration mMergedOverrideConfiguration = new Configuration() //监听被覆盖的容器配置是否发生变化
private ArrayList<ConfigurationContainerListener> mChangeListeners = new ArrayList<>()

(3)获取成员变量

//获取 mFullConfiguration
public Configuration getConfiguration() //获取 mOverrideConfiguration
public Configuration getOverrideConfiguration() //获取 mMergedOverrideConfiguration
public Configuration getMergedOverrideConfiguration()

(4)更新配置

//更新 mFullConfiguration
public void onConfigurationChanged(Configuration newParentConfig) //更新 mOverrideConfiguration
public void onOverrideConfigurationChanged(Configuration overrideConfiguration)

(5)获取边框

//获取边框,取值:mFullConfiguration.windowConfiguration.getBounds()
public Rect getBounds() //获取边框,取值:mOverrideConfiguration.windowConfiguration.getBounds()
public Rect getOverrideBounds()

(6)窗口模式

//获取窗口配置,取值:mFullConfiguration.windowConfiguration
public WindowConfiguration getWindowConfiguration() //获取窗口模式,取值:mFullConfiguration.windowConfiguration.getWindowingMode()
public int getWindowingMode() //是否处于多窗口模式
public boolean inMultiWindowMode() //是否处于分屏模式
public boolean inSplitScreenWindowingMode() //是否处于Pip模式
public boolean inPinnedWindowingMode() //是否处于 FreeformW 模式(窗口可以移动)
public boolean inFreeformWindowingMode()

(7)ActivityType

//取值:mFullConfiguration.windowConfiguration.getActivityType()
public int getActivityType() //取值:mFullConfiguration.windowConfiguration.getActivityType()
public int getActivityType() public boolean isActivityTypeHome() public boolean isActivityTypeRecents() public boolean isActivityTypeAssistant() public boolean isActivityTypeStandard()

(8)注册/注销监听器

//mChangeListeners.add(listener)
public void registerConfigurationChangeListener(ConfigurationContainerListener listener) //mChangeListeners.remove(listener)
public void unregisterConfigurationChangeListener(ConfigurationContainerListener listener)

(9)抽象方法

//获取子节点个数
abstract protected int getChildCount() //获取子节点
abstract protected E getChildAt(int index) //获取父节点
abstract protected ConfigurationContainer getParent()

​ 声明:本文转自【framework】ConfigurationContainer简介

【framework】ConfigurationContainer简介的更多相关文章

  1. 实体框架(Entity Framework)简介

    实体框架(Entity Framework)简介 简称EF,与ADO.NET关系 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R ...

  2. iOS - 系统经常使用框架(framework)的简介

    系统框架(framework)的简介 ImageIO  - 该框架的接口可用于导入或导出图像数据及图像元数据 CoreTelephony  - 获取IMSI号,SIM卡背面的号码是SIM卡的电子串号, ...

  3. .NET Entity Framework入门简介及简单操作

    Entity Framework是微软借鉴ORM思想开发自己的一个ORM框架. ORM就是将数据库表与实体对象(相当于三层中的Model类)相互映射的一种思想. 最大的优点就是非常方便的跨数据库平台. ...

  4. Spring Framework体系结构简介

    说明:以下转自Spring官方文档,用的版本为4.3.11版本. 一.引用官方文档 2.2.1核心集装箱 所述核心容器由以下部分组成spring-core, spring-beans,spring-c ...

  5. 2、ASP.NET MVC入门到精通——Entity Framework入门

    实体框架(Entity Framework)简介 简称EF 与ADO.NET关系 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R ...

  6. C# 泛型简介

    摘要:本文讨论泛型处理的问题空间.它们的实现方式.该编程模型的好处,以及独特的创新(例如,约束.一般方法和委托以及一般继承).此外,本文还讨论 .NET Framework 如何利用泛型. 下载 Ge ...

  7. Robot Framework测试框架学习笔记

    一.Robot Framework框架简介         Robot Framework是一种基于Python的可扩展关键字驱动自动化测试框架,通常用于端到端的可接收测试和可接收测试驱动的开发.可以 ...

  8. 实体框架(Entity Framework)

    实体框架(Entity Framework) 实体框架(Entity Framework)简介 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对 ...

  9. 七、Framework类库

    1.Framework类库简介 .Net Framework类库包含Framework类库(Framework Class Library,FCL).FCL是一组DLL程序集的统称,其中含有数千个类型 ...

  10. 小试---EF5.0简介

    简介 实体框架Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术.是微软的一个ORM框架.简单的说就是把关系型数据库映射成面向对象模型. 一篇更加详细的 ...

随机推荐

  1. [转帖]k8s之PV、PVC、StorageClass详解

    https://zhuanlan.zhihu.com/p/128552232 导读 上一篇写了共享存储的概述以及一个简单的案例演示.这一篇就写一下PV和PVC. PV是对底层网络共享存储的抽象,将共享 ...

  2. [转帖]使用Transformers推理

    https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/%E4%BD%BF%E7%94%A8Transformers%E6%8E%A8%E7%90%86 ...

  3. 人均瑞数系列,瑞数 5 代 JS 逆向分析

    声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...

  4. pymongo中针对指定集合更新validator规则

    问题描述: 针对mongo中已创建的集合,更新validator验证器规则 解决方法 在确保pymongo中所使用的用户对目标数据库具有dbAdmin之类的管理权限的前提下(若无权限,可在mongo中 ...

  5. widows 安装docker

    1.安装docker 依次安装如下两个文件: 如启动docker报错:可以是hv没有开启,按如下方法解决 (23条消息) Windows10启动Docker报错:Hardware assisted v ...

  6. [1] 以逆向的角度来看流程控制语句——if

    [1] 以逆向的角度来看流程控制语句--if 1. if语句(单分支) ​ if语句转换的条件跳转指令与if语句的判断结果是相反的, 因为C语言是根据代码行的位置决定编译后二进制代码地址高低的,即低行 ...

  7. Spring WebSocket实现实时通信的详细教程

    简介 WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议.WebSocket 连接允许客户端和服务器之间的全双工通信,以便任何一方都可以通过已建立的连接将数据推送到另一方. 我们 ...

  8. 你的代码已被埋在北极冰雪之下,保存千年——GitHub北极代码保险库

    GitHub存档计划:北极代码保险库 在2019 GitHub 宇宙大会(GitHub Universe 2019)上,他们提到了一个问题,1000年后的软件会是什么样?人类会是什么样子?对此我们只能 ...

  9. 【深度学习项目三】ResNet50多分类任务【十二生肖分类】

    相关文章: [深度学习项目一]全连接神经网络实现mnist数字识别 [深度学习项目二]卷积神经网络LeNet实现minst数字识别 [深度学习项目三]ResNet50多分类任务[十二生肖分类] 『深度 ...

  10. C/C++中的可变参数和可变参数模板

    目录 1.说明 2.C语言中的可变参数 3.C++中的可变参数模板 2.1.使用递归的方式遍历 2.2.使用非递归的方式遍历 1.说明 不谈官方定义,就从个人理解上说,可变参数 就是函数传参的时候,不 ...