Android之Input子系统配置更新导致的Activity重启
来源:互联网 发布:健身软件推荐 编辑:程序博客网 时间:2024/06/11 23:40
最近遇到2.4G模组(这些都是有键盘设备注册的)接入、有线键盘接入和输入法中英文切换后引起的UI重启问题;现转载如下博文,后边在对其做源码分析。
转载:http://blog.csdn.net/jkkjklmn/article/details/7349517
http://blog.csdn.net/jivin_shen/article/details/6839175
1.可能引起Activity重启的一些属性
"mcc" 国际移动用户识别码所属国家代号是改变了----- sim被侦测到了,去更新mcc mcc是移动用户所属国家代号"mnc" 国际移动用户识别码的移动网号码是改变了------ sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网
"locale" 地址改变了-----用户选择了一个新的语言会显示出来
"touchscreen" 触摸屏是改变了------通常是不会发生的
"keyboard" 键盘发生了改变----例如用户用了外部的键盘
"keyboardHidden" 键盘的可用性发生了改变
"navigation" 导航发生了变化-----通常也不会发生
"screenLayout" 屏幕的显示发生了变化------不同的显示被激活
"fontScale" 字体比例发生了变化----选择了不同的全局字体
"uiMode" 用户的模式发生了变化
"orientation" 屏幕方向改变了
"screenSize" 屏幕大小改变了
"smallestScreenSize" 屏幕的物理大小改变了,如:连接到一个外部的屏幕上
2.应用程序AndroidManifest.xml中的android:configChanges属性
在android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。在activity加上android:configChanges="keyboardHidden|orientation"属性,就不会重启activity。而只是调用onConfigurationChanged(Configuration newConfig)。这样就可以在这个方法里调整显示方式。3.实例
应用程序Activity中实现的onConfigurationChanged方法:
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) { } }
AndroidManifest.xml中的属性设置:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.himi" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="4" /> </manifest>
- Android之Input子系统配置更新导致的Activity重启
- Android Framework------之Input子系统
- Android Framework------之Input子系统
- Android Framework------之Input子系统
- Android Framework------之Input子系统
- Android Framework------之Input子系统
- Android Framework------之Input子系统
- ANDROID解决屏幕旋转而导致重启ACTIVITY
- Androidの解决自动旋转导致activity重启问题
- android设备连接蓝牙外设导致activity重启(recreate)的问题
- Android之Input子系统按键repeat
- Android之Input子系统事件分发流程
- Android之Input子系统与输入法
- android input子系统之-常用命令及技巧
- Android之Input子系统事件分发流程
- Android之Input子系统事件分发流程
- Android之Input子系统事件分发流程
- android input子系统之二:核心层
- c/c++笔试题
- 用jad.exe 反编译class文件为java文件
- 自己动手修改Robotium代码
- qt编写的猜数游戏
- jquery ajax实时动态数据
- Android之Input子系统配置更新导致的Activity重启
- 修改JAR包中的文件(通用函数)
- Java虚拟机类加载机制浅谈
- opencv学习-imgprocess-直方图比较compareHist
- Loading遮罩组件
- sharkint
- android中通过自定义xml实现你需要的shape效果 xml属性配置
- 解题报告 ch0
- 利用已存在的数组,经过条件筛选后,再将筛选剩下的元素组成一个数组