`

实时改变配置

阅读更多

Android通过终止、重启应用程序来重新加载资源文件,以做到对语言、区域和硬件实时变化的支持。

 

它的默认的行为不是总是方便和令人满意的,尤其当配置变化(如屏幕方向和键盘可视)、用户旋转设备或划出键盘等。你可以通过监测和响应定制你的应用程序来对这些变化作出响应。

 

为了能让Activity能监听实时的配置变化,需要在manifest节点里添加“android:configChanges”特性,指定你要处理的配置变化事件。

 

接下来的列表给出了你可以指定的配置变化的事件值:

 

orientation                             屏幕在纵向和横向间旋转。

keyboardHidden                    键盘显示或隐藏。

fontScale                                 用户变更了首选的字体大小。

locale                                       用户选择了不同的语言设定。

keyboard                                 键盘类型变更,例如手机从12键盘切换到全键盘

touchscreennavigation    键盘或导航方式变化,一般不会发生这样的事件。

 

你可以选择捕获多个事件,通过在各事件值间使用“|”。

 

接下来的代码片段显示了Activity要捕获屏幕方向和键盘可视的事件:

 

<activity android:name=”.TodoList”

android:label=”@string/app_name”

android:theme=”@style/TodoTheme”

android:configChanges=”orientation|keyboard”/>

 

 

增加这个特性就会强制应用程序在指定的配置变化时不用再重新启动,而是触发Activity中的onConfigurationChanged方法。如下面的代码片段所示,override这个方法去捕获配置变化,通过传入的Configuration 对象的值进行合适的处理。需要提醒的是需要调用父类的方法,并且要重新加载Activity使用的资源,以防有变更。

 

@Override

public void onConfigurationChanged(Configuration _newConfig) {

super.onConfigurationChanged(_newConfig);

 

[ ... 基于资源值更新UI ... ]

 

if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {

[ ... 对不同的屏幕方向作出处理 ... ]

}

 

if (_newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {

[ ... 对键盘可见作出处理 ... ]

}

}

 

 

当onConfigurationChanged 被调用时,Activity的资源变量都已经用新的值进行了更新,所以它们是安全的。

 

任何你没有显式指明的配置变化事件,都将由应用程序捕获,而且仍然会引起应用程序的重启,而不会调用onConfigurationChanged 方法。

分享到:
评论

相关推荐

    Windows平台,Nginx配置文件修改自动加载重启

    4. **自动加载与重启**:`nginx-conf-watcher`会在检测到配置文件变化时,自动执行`nginx -s reload`命令,从而实现配置的实时加载。如果加载失败,通常是因为配置文件有语法错误,此时`nginx-conf-watcher`可能会...

    中职网络搭建DCN4600交换机配置手册

    中职网络搭建DCN4600交换机配置手册中职网络搭建DCN4600交换机配置手册中职网络搭建DCN4600交换机配置手册中职网络搭建DCN4600交换机配置手册中职网络搭建DCN4600交换机配置手册中职网络搭建DCN4600交换机配置手册...

    Outlook自动配置脚本

    Outlook自动配置脚本是一种高效的方法,用于批量或快速设置Microsoft Outlook客户端的电子邮件账户,而无需手动输入所有必要的服务器信息和设置。这个脚本通常基于Visual Basic Script (VBS),利用Outlook对象模型来...

    学会配置交换机(教你如何配置交换机)

    只有进入配置模式后才能改变交换机的配置。 3. 添加 VLAN 并激活 新的交换机一般情况下只设置了 VLAN 1,添加 VLAN 后,交换机的 VLAN 才可用。新添加的 VLAN 不激活也是不通的,相当于处于关闭状态,只有处于激活...

    HMC7044配置上位机

    例如,当系统需要改变工作频率或功率等级时,可能需要重新加载配置文件。 总之,HMC7044配置上位机简化了射频开关的参数设置,生成的配置文件可直接应用于STM32的SPI通信中,实现对HMC7044的精确控制。理解并掌握这...

    C#编程实现动态改变配置文件信息的方法

    在C#编程中,动态改变配置文件信息是一个常见的需求,特别是在需要在运行时根据环境或用户需求调整应用程序设置时。本文将深入探讨如何利用C#处理XML格式的配置文件,以便进行读取、修改和保存操作。 配置文件通常...

    struts2配置文件改变DEMO

    这个"struts2配置文件改变DEMO"是用于展示如何修改Struts2的配置文件来改变应用的运行方式。 首先,我们要了解Struts2的核心配置文件——`struts.xml`。这是一个XML文件,通常位于`src/main/resources`或`WEB-INF/...

    ADF4351配置程序.zip_ADF4351_ADF4351程式_adf4350配置_adf4351 程序_adf4351配置

    扫频功能可能是通过改变FTW或分频系数实现的,以连续改变输出频率,检测不同频率上的信号特性。 总结来说,ADF4351的配置涉及到多个参数的精确设定,这需要对器件的内部结构和工作原理有深入理解。通过C51编程,...

    proe config配置文件大全

    例如,你可以通过修改`config.pro`来改变以下设置: 1. **界面定制**:如字体大小、颜色方案、快捷键等,可以按照个人喜好和工作效率进行调整。 2. **性能优化**:配置文件可以设定内存使用、模型缓存大小等,以...

    spring整合java quartz实现动态定时任务的前台网页配置与管理

    在实际项目应用中经常会用到定时任务,可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合...

    springcloud配置中心个人demo

    6. **Spring Cloud Bus**:在某些示例中,可能会用到 Spring Cloud Bus 来实现实时配置更新的广播。当配置在 Config Server 上改变时,Bus 可以通知所有相关的客户端应用进行自动刷新。 7. **API 和 Web UI**:...

    STM32 CUBEMX主从定时器配置PWM任意相位可调,占空比可调工程包方法二

    STM32 CUBEMX是ST公司提供的一个强大的软件工具,用于快速配置和初始化STM32微控制器。在这个“STM32 CUBEMX主从定时器配置PWM任意相位可调,占空比可调工程包方法二”中,我们将深入探讨如何使用CUBEMX来设置主从...

    STM8S的配置字节OPTION BYTE

    例如,在初始化程序中,用户可以通过写入特定的寄存器来改变配置字节中的设置。但这种方式在操作上相对复杂,需要开发者对微控制器的内部结构和编程细节有深入的理解。 总而言之,STM8S的配置字节OPTION BYTE是微...

    极点配置与观测器设计

    ### 极点配置与观测器设计 #### 一、引言 在现代控制理论中,极点配置与观测器设计是非常重要的两个概念。极点配置主要用于改进系统的动态响应特性,而观测器设计则是为了估计系统状态,从而实现更好的控制。本文将...

    Configuration对properties、xml配置文件的【增删改查】及动态加载

    这个库使得在运行时对配置进行【增删改查】操作变得简单,同时支持动态加载,从而实现配置的实时更新。 一、Apache Commons Configuration库介绍 Apache Commons Configuration库是Apache软件基金会的一个项目,...

    Step by Step CentOS 7系统下Rsync+Sersync实时数据同步配置

    ### CentOS 7系统下Rsync+Sersync实时数据同步配置知识点 #### CentOS7操作系统概述 CentOS 7(Community ENTerprise Operating System)是基于Red Hat Enterprise Linux构建的免费企业级操作系统。它是由社区驱动...

    配置管理工程师面试题目

    配置管理能够给项目带来的好处包括保证配置项的完整和可追溯性,使团队成员可以拿到所需工件的所需版本,变更控制使团队每个人都了解到谁改变了哪些东西,整个团队的信息对称等。 6. 作为一个配置管理工程师,哪些...

    华为ospf配置实例,实验操作

    配置DR选举时,可以调整接口优先级以改变选举结果;配置负载分担时,需开启负载分担功能并设置等价路由的优先级和负载分担模式。 总的来说,华为路由器中的OSPF配置实例丰富多样,覆盖了OSPF协议的各个方面,为网络...

    QC配置详细图解

    ### QC配置详细图解知识点解析 #### 一、权限配置详解 **1. Requirements权限角色分配** - **P_Developeradmin权限分配** - 图片示例:此部分通过图片展示了P_Developeradmin角色在Requirements模块下的具体权限...

    Diamond 配置生成

    3. 配置推送:当配置发生改变时,配置中心会主动推送给订阅了该配置的客户端,确保所有服务节点的配置保持一致。 三、配置管理流程 1. 创建配置:开发者在配置中心创建新的配置项,包括键值对、注释等信息,可以以...

Global site tag (gtag.js) - Google Analytics