Android之Activity在横竖屏切换时的生命周期
先来张经典图镇楼...
1.onWindowFocusChanged()的调用时机
创建Activity的调用顺序
锁定屏幕
解锁屏幕
该方法在Activity窗口获得或失去焦点时被调用,例如创建时首次呈现在用户面前;当前Activity被其他Activity覆盖;当前Activity转到其他Activity或按Home键回到主屏,自身退居后台;用户退出当前Activity。
注:对于该方法,适合在onCreate中无法获取试图组件大小的时候使用。
2.onSaveInstanceState
(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;
(2)在用户改变屏幕方向时,此方法会被调用,此时比较适合保存临时数据。
(3)在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。
3.onRestoreInstanceState,一般重写以便获取在onSaveInstanceState保存的临时数据。
(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到此Activity,此方法会被调用;
(2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。
提高切换横竖屏的效率
为避免切换横竖屏时,Activity的销毁重建过程,需要在AndroidMainfest.xml中对OrientationActivity对应的<activity>配置android:configChanges="orientation",测试结果如下,
注:在android 4.0以上还须要加上screenSize,即android:configChanges="orientation|screenSize"才会使得切换横竖屏时调用onConfigurationChanged()方法。