目录
Android文档介绍configuration
Android中的组件Activity在AndroidManifest.xml文件中可以指定参数android:configChanges,用于捕获手机状态的改变。
如果Activity添加了android:configChanges属性,在当所指定属性(ConfigurationChanges)发生改变时,通知程序调用onConfigurationChanged()函数。
Lists configuration changes that the activity will handle itself. When a configuration change occurs at runtime, the activity is shut down and restarted by default, but declaring a configuration with this attribute will prevent the activity from being restarted. Instead, the activity remains running and its onConfigurationChanged() method is called.
大概意思就是:如果我们AndroidManifest.xml中的Activity中的android:configChanges申明了对应的属性,当属性改变时Activity不会重启且调用onConfigurationChanged()。
configuration配置的格式
将下列字段用“|”符号分隔开。
如下:
<activity android:configChanges="orientation|uiMode|keyboard|keyboardHidden|fontScale|mcc|mnc|locale|touchscreen|navigation|screenLayout|colorMode" android:name=".MainActivity" android:launchMode="singleInstance"> </activity>
configuration属性简介
下面简单的介绍一下configuration可以配置的属性
mcc
IMSI移动国家/地区代码(MCC)已更改-已检测到SIM卡并更新了MCC
mnc
IMSI移动网络代码(MNC)已更改-已检测到SIM卡并更新了MNC。
locale
语言环境已更改-用户选择了一种新的语言来显示文本。
touchscreen
触摸屏已更改。(这通常不会发生。)
keyboard
键盘类型已更改-例如,用户已插入外部键盘。
keyboardHidden
键盘的可访问性已更改-例如,用户显示了硬件键盘。
navigation
导航类型(轨迹球/ dpad)已更改。(这通常不会发生。)
PS:项目插入个别无线鼠标,会需要配置 android:configChanges=="keyboardHidden|keyboard|navigation";来阻止Activity的销毁。
screenLayout
屏幕布局已更改-这可能是由于激活了不同的显示引起的。
fontScale
字体缩放比例已更改-用户选择了新的全局字体大小。
uiMode
用户界面模式已更改-这可能是由于用户将设备放入办公桌/汽车停放区或夜间模式更改而引起的。请参阅UiModeManager。 在API级别8中添加。
orientation
屏幕方向已更改-用户已旋转设备。
注意:如果您的应用程序的目标是API级别13或更高级别(由minSdkVersion和targetSdkVersion属性声明),则还应该声明"screenSize" 配置,因为当设备在纵向和横向之间切换时,配置也会更改。
screenSize
当前的可用屏幕尺寸已更改。这表示相对于当前长宽比的当前可用大小的更改,因此当用户在横向和纵向之间切换时,此更改将改变。但是,如果您的应用程序以API级别12或更低级别为目标,则您的活动始终会自行处理此配置更改(即使在Android 3.2或更高版本的设备上运行,此配置更改也不会重新启动您的活动)。 在API级别13中添加。
smallestScreenSize
物理屏幕尺寸已更改。这表示尺寸的变化而与方向无关,因此仅在实际物理屏幕尺寸已更改(例如切换到外部显示器)时才会更改。对此配置的更改对应于 minimumWidth配置的更改。但是,如果您的应用程序以API级别12或更低级别为目标,则您的活动始终会自行处理此配置更改(即使在Android 3.2或更高版本的设备上运行,此配置更改也不会重新启动您的活动)。 在API级别13中添加。
layoutDirection
布局方向已更改。例如,从左到右(LTR)更改为从右到左(RTL)。 在API级别17中添加。
参考文章
PS: 大部分机器翻译,最好还是看一下官方文档。
大神,你真棒!膜拜
加油