Activity的生命周期大家都知道,通常我们会指定activity的屏幕方向,这样避免屏幕旋转改变后activity生命周期变化

android:screenOrientation="portrait"竖屏

android:screenOrientation="landscape"横屏


上面通过指定Activity显示屏幕方向,代码很方便也很多应用是这样做的,但是需求来时,需要应用自适应屏幕方向,这样我们就需要使用

android:configChanges这个属性了和在Activity重写onConfigurationChanged方法

例子:

android:configChanges="keyboardHidden|orientation"

@Overridepublic void onConfigurationChanged(Configuration newConfig) {// TODO Auto-generated method stubLog.i("UserInfoActivity", "onConfigurationChanged");if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {Log.i("TAG", "横屏");// do some things} else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {Log.i("TAG", "竖屏");
 // do some things
}super.onConfigurationChanged(newConfig);}


其中上述的super.onConfigurationChanged(newConfitg);方法是必须的,不能去掉,否者会有异常

异常信息如下:

12-19 11:00:42.165: E/AndroidRuntime(20440): android.app.SuperNotCalledException: Activity ui.UserInfoActivity did not call through to super.onConfigurationChanged()


然而我们在实际使用时,系统版本大多不相同,在测试中本人在4.1系统中就出现了onConfigurationChanged方法不进入的情况,究其原因,在于

自从Android3.2(API13),screensize也开始跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion或者

TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orientation",你还必须设置"ScreenSize"。
解决方法:
AndroidManifest.xml中设置android:configChanges="orientation|keyboardHidden|screenSize"

当然我们也可以不指定TargetSdkVersion版本来这么做,也能达到大家的要求

更多相关文章

  1. android:layout_gravity="bottom"不起作用问题
  2. Android(安卓)屏幕横竖切换详解
  3. Android(安卓)List divider显示不出来的问题
  4. Android(安卓)监听软键盘弹起和收起事件
  5. 【Android(安卓)Studio】Android(安卓)Studio 安装及设置
  6. Android(安卓)shell 创建 模拟器
  7. android 属性个人收集 android:visibility
  8. Android界面基本属性
  9. Android计算器布局

随机推荐

  1. Android源码中的单例模式
  2. android传感器sensor
  3. 【winows7+android-ndk-r9+Cygwin 】coco
  4. 调用Android系统“应用程序信息(Applicati
  5. android之requestWindowFeature详解
  6. android 设置应用程序 默认值
  7. JAVA/Android(安卓)读写文件,避免中文乱码
  8. Android性能测试之内存泄露以及GC机制浅
  9. cocos2dx 在mac下开发ios和android游戏
  10. Android(安卓)Studio打包apk