android:configChanges="orientation|keyboardHidden"
在初学Activity时,老师告诉我们:当屏幕方向发生变化时,Activity会重走一遍生命周期。必须在AndroidManifest文件中添加这句话: android:configChanges="orientation|screenSize"这可已防止当前Activity被销毁。我们信了,也试了,但是原因是什么呢?
原因是这样的,Activity,SerVice,Application等组件都实现了ComponentCallbacks接口,接口有如下两个方法:
所以Activity肯定有实现这个方法了,所以我们自己的子Activity当然可以重写这个方法了。
再看这个方法的注释:
Activity在运行状态时,如果设备参数发生变化onConfigurationChanged(Configuration newConfig)这个方法将会被调用。注意:只有你在manifest文件中注册 android:configChanges="orientation|keyboardHidden"这样的参数,当系统参数发生变化时才会调用这个方法,否则将会重启该Activity。
至此,所有的问题都已经搞清楚。
系统参数变化时,会重启当前处于活动状态的Activity。除非你在manifest中进行了相关的配置。