【framework】ConfigurationContainer简介
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简介的更多相关文章
- 实体框架(Entity Framework)简介
实体框架(Entity Framework)简介 简称EF,与ADO.NET关系 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R ...
- iOS - 系统经常使用框架(framework)的简介
系统框架(framework)的简介 ImageIO - 该框架的接口可用于导入或导出图像数据及图像元数据 CoreTelephony - 获取IMSI号,SIM卡背面的号码是SIM卡的电子串号, ...
- .NET Entity Framework入门简介及简单操作
Entity Framework是微软借鉴ORM思想开发自己的一个ORM框架. ORM就是将数据库表与实体对象(相当于三层中的Model类)相互映射的一种思想. 最大的优点就是非常方便的跨数据库平台. ...
- Spring Framework体系结构简介
说明:以下转自Spring官方文档,用的版本为4.3.11版本. 一.引用官方文档 2.2.1核心集装箱 所述核心容器由以下部分组成spring-core, spring-beans,spring-c ...
- 2、ASP.NET MVC入门到精通——Entity Framework入门
实体框架(Entity Framework)简介 简称EF 与ADO.NET关系 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R ...
- C# 泛型简介
摘要:本文讨论泛型处理的问题空间.它们的实现方式.该编程模型的好处,以及独特的创新(例如,约束.一般方法和委托以及一般继承).此外,本文还讨论 .NET Framework 如何利用泛型. 下载 Ge ...
- Robot Framework测试框架学习笔记
一.Robot Framework框架简介 Robot Framework是一种基于Python的可扩展关键字驱动自动化测试框架,通常用于端到端的可接收测试和可接收测试驱动的开发.可以 ...
- 实体框架(Entity Framework)
实体框架(Entity Framework) 实体框架(Entity Framework)简介 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对 ...
- 七、Framework类库
1.Framework类库简介 .Net Framework类库包含Framework类库(Framework Class Library,FCL).FCL是一组DLL程序集的统称,其中含有数千个类型 ...
- 小试---EF5.0简介
简介 实体框架Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术.是微软的一个ORM框架.简单的说就是把关系型数据库映射成面向对象模型. 一篇更加详细的 ...
随机推荐
- 问题--VSCODE编写C含scanf无终端跳出
1.问题 在VSCODE中编写C程序,用到scanf输入时,发现无终端输入数据 2.解决方法 在设置里搜索RunInTerminal,勾选该选项即可
- Redis之入门概括与指令
Redis特点(AP模型,优先保证可用,不会管数据丢失): 快的原因: 基于内存操作,操作不需要跟磁盘交互 k-v结构,类似与hashMap,所以查询速度非常快,接近O(1). 底层数据结构是有如:跳 ...
- Oracle 高低水位线的学习
Oracle 高低水位线的学习 背景 最近产品的一些脚本会大量的给一些流程表里面插入数据 因为只是一个流程相关没有时序查询的需求 所以数据量挺大, 但是按照石时间戳删除非常麻烦. 自己执行过多次del ...
- [转帖]linux 内核协议栈 TCP time_wait 原理、配置、副作用
https://my.oschina.net/u/4087916/blog/3051356 0. 手把手教你做中间件.高性能服务器.分布式存储技术交流群 手把手教你做中间件.高性能服务器.分布式存 ...
- [转帖]理解 postgresql.conf 的work_mem 参数配置
https://developer.aliyun.com/article/401250 简介: 主要是通过具体的实验来理解 work_mem 今天我们着重来了解 postgresql.conf 中的 ...
- [转帖]VMware Converter (P2V迁移)问题汇总
https://www.dinghui.org/vmware-converter-p2v.html VMware vCenter Converter Standalone,是一种用于将虚拟机和物理机转 ...
- [转帖]Redis核心技术与实战
https://www.cnblogs.com/strick/p/14851429.html 最近在读一篇关于Redis的专栏,叫做<Redis核心技术与实战>,作者在Redis方面研究颇 ...
- 【转帖】eBay 云计算“网”事:网络超时篇
https://www.infoq.cn/article/JmCbkA0XX9NqrcX6loIo eBay技术荟 2020-06-19 本文字数:5508 字 阅读完需:约 18 分钟 导读 eBa ...
- [转帖] 使用socat反向Shell多台机器
https://www.cnblogs.com/codelogs/p/16012319.html 场景# 很多时候,我们需要批量操作多台机器,业界一般使用Ansible来实现,但使用Ansible来操 ...
- zabbix监控进程和监控日志
zabbix监控进程和监控日志 文章目录 zabbix监控进程和监控日志 一.自定义监控进程 1.新建脚本存放目录 2.修改zabbix_agentd.conf文件 3.zabbix server端进 ...