文章

AndroidManifest.xml的configChanges配置简介

文章目录

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中添加。

参考文章

  1. Android官方文档

PS: 大部分机器翻译,最好还是看一下官方文档。

1 0
发表评论