当系统配置发生改变后(eg:方向改变),Activity会被重新创建,那么想让activity不重新创建,就需要在manifests中的activity指定configChanges属性.比如不想让Activity在屏幕旋转的时候重新创建 ,就可以给configChanges数显添加orientation这个值,如下所示.
android:cofigChanges="orientation"
如果我们想指定多个值,可以用"|"链接起来,比如android:configChanges="orientation|keyboardHidden"
系统配置含义如下:
项目 | 含义 |
mcc | SIM卡唯一识别IMSI(国际移动用户识别码)中的国家代码,由三位数字组成,中国为460.此项表示mcc代码发生了改变 |
mnc | SIM卡唯一识别(国际移动用户识别码)中的运营商代码,有两位数字组成,中国移动TD系统为00,中国联通为01,中国电信为03. 此项表示明年初发生改变 |
locale | 设备的本地位置发生了改变,一般只切换了系统语言 |
touchscreen | 触摸屏发生了改变,这个很费解,正常情况下无法发生,可以忽略他 |
keyboard | 键盘的类型发生了改变,比如用户使用了外插键盘 |
keyboardHidden | 键盘的可访问性发生了改变,比如用户调出了键盘 |
navigation | 系统导航方式发生了改变,比如采用了轨迹球导航,这个点有点费解,很难发生,可以忽略 |
screenLayout | 屏幕布局发生了改变,很有可能是用户激活了另外一个显示设备 |
fontScale | 系统字体缩放比例发生了改变,比如用户选择了一个新字号 |
uiMode | 用户界面模式发生了改变,比如是否开启了夜间模式(API8新添加) |
orientation | 屏幕方向发生了改变,这个最长用的,比如旋转了手机屏幕 |
screenSize | 当屏幕尺寸信息发生了改变,当旋转设备屏幕时,品目尺寸发生变化,这个选项比较特殊,他和编译选项有关,当编译选项中的 minSdkVersion和tagerSdkVersion均低于13时,此选项不会导致Avtivity重启,否则会导致Activity重启(API13新添加) |
smallestScreenSize | 设备的物理屏幕尺寸发生改变,这个项目和屏幕的刚想没关系,仅仅表示在实际的物理屏幕的尺寸改变的时候发生,比如用户切换到了外部的显示设备, 这个和screenSize一样,当编译选项中的minSDKVersion和targetSDKVersion局低于13时,此选项不会导致Activity重启,否则慧导致Activity重启(API13新添加) |
layoutDirection | 当布局方向发生改变,这个属性用的比较少,正常情况下无须修改布局的layoutDirection属性(API17新添加) |