在Activity中添加了 android:configChanges属性,目的是当所指定属性(Configuration Changes)发生改变时,通知程序调用 onConfigurationChanged()函数。

通过一个例子来介绍:

1、运行一个新建的Activity

onCreate-->onStart-->onResume-->

2、按crtl+f12切换成横屏时

onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->

3、再按crtl+f12切换成竖屏时,发现打印了两次相同的log

onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->

4、修改AndroidManifest.xml,把该Activity添加 android:configChanges="orientation",执行步骤2

onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->

5、再执行步骤3,发现不会再打印相同信息,但多打印了一行onConfigChanged

onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onConfigurationChanged-->

6、把步骤4的android:configChanges="orientation" 改成 android:configChanges="orientation|screenSize|keyboardHidden"(sdk>13时需加上screenSize),执行步骤2,就只打印onConfigChanged

onConfigurationChanged-->

7、执行步骤3

onConfigurationChanged-->onConfigurationChanged-->


总结:
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
3、设置Activity的android:configChanges="keyboardHidden"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
4、设置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",才不会重新调用各个生命周期,只会执行onConfigurationChanged方法例如:android:configChanges="orientation|screenSize|keyboardHidden"。

5、属性值,用“|”符号分隔开:


更多相关文章

  1. android EditText设置不可写
  2. android实现字体闪烁动画的方法
  3. Android(安卓)Wifi模块分析(三)
  4. android“设置”里的版本号
  5. Android中dispatchDraw分析
  6. Android四大基本组件介绍与生命周期
  7. 在Fragment中设置控件点击方法,执行失败。
  8. Android(安卓)闹钟管理类的使用
  9. Android(安卓)Service AIDL

随机推荐

  1. Android开发网站
  2. Android(安卓)下保持屏幕常亮
  3. Android创建和删除桌面快捷方式
  4. Android创建和删除桌面快捷方式
  5. Android开发—弹出列表、单选、多选框
  6. Android(安卓)GPS 获得 经纬度 并得到该
  7. Android获取年、月、日、时、分
  8. android常用控件
  9. 如何制作Android手电筒程序
  10. Android下进行 Facebook 分享