news 2026/3/14 7:22:02

Android基础-Activity属性 android:configChanges

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android基础-Activity属性 android:configChanges
<activity android:name=".activity.MoreFuncActivity" android:exported="false" android:configChanges="keyboardHidden|orientation|screenSize|navigation|keyboard" />

项目清单文件中看到

android:configChanges="keyboardHidden|orientation|screenSize|navigation|keyboard"

不太清楚这个属性的作用,特地学习下,避免踩坑

android:configChanges是Android清单文件(Manifest)中Activity标签的一个重要属性,用于指定当设备配置发生变化时,Activity应该如何响应。

默认情况下,当设备配置发生变化(如屏幕旋转、键盘弹出等),Android系统会销毁并重新创建当前Activity,导致Activity状态丢失。开发者需要在onSaveInstanceState()onRestoreInstanceState()中处理状态保存与恢复。

设置此属性的目的

通过设置android:configChanges,开发者可以告诉系统"不要重新创建Activity,而是调用onConfigurationChanged()方法",让开发者自行处理配置变化,避免Activity重建带来的性能开销和状态管理复杂性。

例子中包含的属性配置变化:

  1. keyboardHidden- 软键盘显示/隐藏状态变化
  2. orientation- 屏幕方向变化(横屏/竖屏)
  3. screenSize- 屏幕尺寸变化(Android 3.2+引入,通常与屏幕旋转相关)
  4. navigation- 导航方式变化(如从触控变为方向键导航)
  5. keyboard- 物理键盘可用性变化(如折叠键盘展开/收起)

下表字符串是该属性的所有有效值(若有多个值,则使用|进行分隔,例如"locale|navigation|orientation")。

说明
"colorMode"

屏幕的颜色模式功能(色域或动态范围)已更改。

注意:activity 使用colorMode属性或在运行时请求的颜色模式不同于支持不同颜色模式的功能。更改所用颜色模式的 activity 不会导致配置更改,因为显示屏的颜色功能没有更改。

"density"

显示密度的更改,例如当用户指定不同的显示比例或其他屏幕当前处于活跃状态时。

在 API 级别 24 中引入。

"fontScale"字体缩放比例的更改,例如当用户选择新的全局字体大小时。
"fontWeightAdjustment"字体粗细增加量已发生变化。
"grammaticalGender"相应语言的语法性别已更改。请参阅 GrammaticalInflectionManager。

在 API 级别 34 中引入。

"keyboard"键盘类型的更改,例如当用户插入外接键盘时。
"keyboardHidden"键盘无障碍功能的更改,例如当用户显示硬件键盘时。
"layoutDirection"

布局方向的更改,例如从由左到右 (LTR) 改为由右到左 (RTL)。

在 API 级别 17 中引入。

"locale"语言区域的更改,例如当用户选择显示文本所用的新语言时。
"mcc"当系统检测到用于更新 MCC 的 SIM 卡时,IMSI 移动设备国家/地区代码 (MCC) 发生的更改。
"mnc"当系统检测到用于更新 MNC 的 SIM 卡时,IMSI 移动网络代码 (MNC) 发生的更改。
"navigation"导航类型(轨迹球或方向键)的 TA 更改。通常不会出现这种情况。
"orientation"

屏幕方向的更改,例如用户旋转设备时。

注意:如果应用面向 Android 3.2(API 级别 13)或更高版本的系统,则还应声明"screenLayout""screenSize"配置,因为当设备在纵向模式与横向模式之间切换时,屏幕布局和屏幕大小可能会发生变化。

"screenLayout"屏幕布局的更改,例如在其他屏幕变为活动状态时。
"screenSize"

当前可用屏幕尺寸的更改。

该值表示目前可用尺寸相对于当前宽高比的变更,当用户在横向模式与纵向模式之间切换时,它便会发生变更。

在 API 级别 13 中引入。

"smallestScreenSize"

实体屏幕尺寸的更改。

该值表示与方向无关的尺寸变更,因此它只有在实际物理屏幕尺寸发生变更(如切换到外部显示器)时才会变化。对此配置所作变更对应 smallestWidth 配置的更改。

在 API 级别 13 中引入。

"touchscreen"触摸屏模式的更改,例如当用户连接或断开输入外围设备或在不同显示屏之间移动应用时。
"uiMode"界面模式的更改,例如当用户将设备放到桌面或车载基座上时,或者夜间模式发生变化时。如需了解有关不同界面模式的更多信息,请参阅UiModeManager

在 API 级别 8 中引入。

所有这些配置变更都可能影响应用所看到的资源值。因此,调用onConfigurationChanged()时,通常必须再次检索所有资源(包括视图布局和可绘制对象),才能正确处理更改。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/13 12:30:41

Kotaemon在政务智能问答中的合规性设计考量

Kotaemon在政务智能问答中的合规性设计考量 在政务服务日益智能化的今天&#xff0c;公众对AI助手的期待早已超越了“能答上来”&#xff0c;而是要求它“答得准、说得清、可追溯”。一个回答错误可能误导市民错过申报时限&#xff0c;一次数据泄露可能动摇公众对数字政府的信任…

作者头像 李华
网站建设 2026/3/14 5:58:10

Kotaemon支持批量导入知识文档并自动索引

Kotaemon支持批量导入知识文档并自动索引 在企业智能化转型的浪潮中&#xff0c;一个常见却棘手的问题浮出水面&#xff1a;如何让AI真正“懂”企业的内部知识&#xff1f;客服机器人面对新产品手册答非所问&#xff0c;技术支持系统对最新政策变更毫无反应——这些并非模型能力…

作者头像 李华
网站建设 2026/3/9 23:21:52

18、游戏中的控制流操作与Direct3D钩子技术

游戏中的控制流操作与Direct3D钩子技术 1. Adobe AIR模块钩子实现 在游戏开发与调试过程中,有时需要对特定模块的代码进行钩子操作,以监控或修改其行为。这里以Adobe AIR.dll模块为例,介绍如何实现钩子。 1.1 两部分近调用钩子设计 设计了一个两部分的近调用钩子。第一部…

作者头像 李华
网站建设 2026/3/14 11:43:55

20、游戏透视与视野拓展技巧揭秘

游戏透视与视野拓展技巧揭秘 在游戏世界中,玩家们总是希望能够获得更多的信息和优势,以提升自己的游戏体验和竞技水平。本文将深入探讨几种常见的游戏作弊技巧,包括穿墙透视、变焦透视、抬头显示(HUD)等,以及它们的原理和实现方法。 1. Z缓冲与穿墙透视 在游戏渲染中,…

作者头像 李华
网站建设 2026/2/21 22:36:44

Kotaemon多路召回策略设计:dense+sparse+colbert

Kotaemon多路召回策略设计&#xff1a;densesparsecolbert 在构建智能问答系统时&#xff0c;我们常常面临一个核心矛盾&#xff1a;大模型虽然能“说”&#xff0c;但未必“知道”。尤其是在企业级场景中&#xff0c;用户的问题往往涉及具体政策、产品条款或专业术语&#xf…

作者头像 李华
网站建设 2026/3/13 13:27:58

Kotaemon支持自定义评分函数:精细化控制生成质量

Kotaemon支持自定义评分函数&#xff1a;精细化控制生成质量 在金融、医疗和法律等高风险领域&#xff0c;一个看似流畅却暗藏错误的回答可能引发严重后果。传统大语言模型应用常陷入“生成即输出”的被动模式&#xff0c;缺乏对内容质量的主动把控机制。当企业级智能系统需要同…

作者头像 李华