android:configChanges属性
对android:configChanges属性,一般认为有以下几点:
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
但是,自从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样 会重新调用各个生命周期的。因为screen size也开始跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orientation", 你还必须设置"ScreenSize"。
解决方法:
AndroidManifest.xml中设置android:configChanges="orientation|screenSize“
VALUE | DESCRIPTION |
"mcc" | 国际移动用户识别码所属国家代号是改变了----- sim被侦测到了,去更新mcc mcc是移动用户所属国家代号 |
"mnc" | 国际移动用户识别码的移动网号码是改变了------ sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网 |
"locale" | 地址改变了-----用户选择了一个新的语言会显示出来 |
"touchscreen" | 触摸屏是改变了------通常是不会发生的 |
"keyboard" | 键盘发生了改变----例如用户用了外部的键盘 |
"keyboardHidden" | 键盘的可用性发生了改变 |
"navigation" | 导航发生了变化-----通常也不会发生 |
"screenLayout" | 屏幕的显示发生了变化------不同的显示被激活 |
"fontScale" | 字体比例发生了变化----选择了不同的全局字体 |
"uiMode" | 用户的模式发生了变化 |
"orientation" | 屏幕方向改变了 |
"screenSize" | 屏幕大小改变了 |
"smallestScreenSize" | 屏幕的物理大小改变了,如:连接到一个外部的屏幕上 |
android:configChanges
在android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。在activity加上android:configChanges="keyboardHidden|orientation"属性,就不会重启activity.而只是调用onConfigurationChanged(Configuration newConfig).这样就可以在这个方法里调整显示方式.
[java] view plain copy- public void onConfigurationChanged(Configuration newConfig) {
- try {
- super.onConfigurationChanged(newConfig);
- if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
- Log.v("Himi", "onConfigurationChanged_ORIENTATION_LANDSCAPE");
- } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
- Log.v("Himi", "onConfigurationChanged_ORIENTATION_PORTRAIT");
- }
- } catch (Exception ex) {
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
-
"http://schemas.android.com/apk/res/android" - package="com.himi" android:versionCode="1" android:versionName="1.0">
- "@drawable/icon" android:label="@string/app_name">
- ".MainActivity" android:label="@string/app_name"
- android:configChanges="keyboardHidden|orientation">
-
- "android.intent.action.MAIN" />
-
"android.intent.category.LAUNCHER" /> -
"4" />
更多相关文章
- 转:基于 Android(安卓)NDK 的学习之旅----- C调用Java(附源码)
- Android单元测试
- Android(安卓)Uevent 分析,从kernel到framework
- Android教程-Android(安卓)五大布局讲解与应用
- 探究Android异步消息的处理之Handler详解
- ScrollView常用属性汇总
- 【android】TextView属性大全
- 高级组件之画廊视图
- Android(安卓)WebView系列文章2-WebView和js交互