onSaveInstanceState被调用的情况:
1.当前Activity即将被销毁时(内存不够用时,非用户手动销毁)会调用,即当前Activity启动一个新Activity后会被调用,或横竖屏切换也会被调用;
但是当用户点击回退按钮时就不会被调用,因为用户自己退出就没必要保存状态;2. Activity会在父类方法默认保存一些UI的状态信息,如EditText中如果有输入文字,横竖屏切换后文字还在,但前提是要在该控件要有id标签;
如果不让自动保存状态的话,可以在View中设android:saveEnabled=false或不写id标签;
3. 该方法不能保证每次都会被调用,因此它应该保存一些UI状态信息,如果要保存很重要的数据时不能用这个方法保存,而应该在onPause中用
其他方式保存;
4.调用时机在onPause()和onStop()之间;
onRestoreInstanceState:
1.和onSaveInstanceState方法对应,如当切换横竖屏时会调用onSaveInstanceState,当切换屏幕后重新创建activity后就调用该方法
恢复状态信息;
2.onRestoreInstanceState的Bundle类型参数outState和onCreate中的savedInstanceState是一样的,也可以不用重写该方法,而把要在该方法做的操作放在
onCreate方法中,两个的区别就是调用时间不同;onRestoreInstanceState调用时机在onStart()和onResume()之间;
3. 第一次启动Activity时,onCreate中的savedInstanceState为空;android:configChanges: 因为在activity运行期间,只要是屏幕方向改变、或语言环境改变,android系统默认的处理方式是调用onDestroy()后接着调用onCreate()以
重新加载整个activity,但可以通过android:configChanges:参数 当 参数对应配置项改变时,系统就不会重新启动activity