android:configChanges属性总结

文章目录

  • 前言
  • 属性值
  • 总结

前言

Android中的组件Activity在manifest.xml文件中可以指定参数android:ConfigChanges,用于捕获手机状态的改变。在Activity中添加了android:configChanges属性,在当所指定属性(Configuration Changes)发生改变时,通知程序调用onConfigurationChanged()函数。

Google官网链接:android:configChanges属性

属性值

设置方法:将下列字段用“|”符号分隔开,例如:“locale|navigation|orientation”

“density” 显示密度的更改,例如当用户指定不同的显示比例或其他屏幕当前处于活跃状态时。
“fontScale” 字体缩放比例的更改,例如当用户选择新的全局字体大小时。
“keyboard” 键盘类型的更改,例如当用户插入外接键盘时。
“keyboardHidden” 键盘无障碍功能的更改,例如当用户显示硬件键盘时。
“layoutDirection” 布局方向的更改,例如从由左到右 (LTR) 改为由右到左 (RTL)。
“locale” 语言区域的更改,例如当用户选择显示文本所用的新语言时。
“mcc” 当系统检测到用于更新 MCC 的 SIM 卡时,IMSI 移动设备国家/地区代码 (MCC) 发生的更改。移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。
“mnc” 移动网号,在一个国家或者地区中,用于区分手机用户的服务商。
“navigation” 导航类型(轨迹球或方向键)更改。通常不会出现这种情况。
“orientation” 屏幕方向的更改,例如用户旋转设备时。
“screenLayout” 屏幕布局的更改,例如在其他屏幕变为活动状态时。
“screenSize” 当前可用屏幕尺寸的更改。该值表示目前可用尺寸相对于当前宽高比的变更,当用户在横向模式与纵向模式之间切换时,它便会发生变更。
“smallestScreenSize” 实体屏幕尺寸的更改。
该值表示与方向无关的尺寸变更,因此它只有在实际物理屏幕尺寸发生变更(如切换到外部显示器)时才会变化。对此配置所作变更对应 smallestWidth 配置的更改。
“touchscreen” 触摸屏的更改。通常不会出现这种情况。
“uiMode” 界面模式的更改,例如当用户将设备放到桌面或车载基座上时,或者夜间模式发生变化时。

总结

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged()

想阻止程序在运行时重新加载Activity,需要在AndroidManifest.xml文件中设置configChanges值,变化则会执行onConfigurationChanged()
在Android 3.1(API 12)及以前版本:

android:configChanges="orientation|keyboardHidden"

Android 4.0及以后版本:

android:configChanges="keyboardHidden|orientation|screenSize"

你可能感兴趣的:(android,android)