对于一般的Activity,如果不做特殊要求,那么在手机切换横竖屏后,Activity会重新运行onCreate()等流程,不过之前start的Activity仍然有效。若想让Activity不再走onCreate等流程,那么就在AndroidManifest.xml文件中给Activity添加属性android:configChanges
针对sdk13以上的版本,需要额外添加screenSize这个参数。
android:configChanges="keyboardHidden|orientation|screenSize"
如果是sdk13以下的版本,只需给activity的configChanges属性添加orientation和keyboardHidden这两个参数。
android:configChanges="orientation|screenSize"
通常如果不添加configChanges属性,那么activity在旋转屏幕后的生命周期是这样的:
Activity刚启动:
onCreate->onStart->onResume
屏幕切换到横屏:
onPause->onSaveInstanceState->onStop->onDestroy->onCreate->onStart->onRestoreInstanceStaate->onResume
屏幕切换到竖屏:
onPause->onSaveInstanceState->onStop->onDestroy->onCreate->onStart->onRestoreInstanceState->onResume
添加上述configChanges属性后
Activity启动后的周期:
onCreate->onStart->onResume
切换到横屏:
调用onConfigurationChanged()方法
切换到竖屏:
调用onConfigurationChanged()方法
不再调用activity的其他生命周期方法。