默认情况下,当Android应用横竖屏切换时,Activity会销毁后并重新创建,依次执行OnPause->OnSaveInstance->OnStop->OnDestroy->OnCreate->OnStart->OnResume。 网上流传的防止Activity横竖屏切换重新创建的方法是设置android:configChanges=”keyboardHidden|orientation”,但是笔者测试发现,对于运行于Android api版本10之后的版本不再需要keyboardHidden,但是为了兼容肯定还是要加上此项;而对于项目的targetVersion大于等于13的,必须在此参数中再加上一个screenSize才可以,因为13版本以上切换横竖屏时也会触发屏幕尺寸的变化。
因此,笔者对各种情况的生命周期总结如下:
1)对于不设置configChanges或者设置configChanges=”orientation”的,横竖屏切换时重新创建Activity,依次执行OnPause->OnSaveInstance->OnStop->OnDestroy->OnCreate->OnStart->OnResume
2)设置android:configChanges=”orientation|keyboardHidden|screenSize”后,横竖屏切换时不会重新创建Activity,只会执行Activity的onConfigurationChanged事件
官方参考文档:http://developer.android.com/guide/topics/manifest/activity-element.html#config