最近遇到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是移动用户所属国家代号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>