异常关闭,重新创建两个方法。
onSaveInstanceState(Bundle outState)
onRestoreInstanceState(Bundle savedInstanceState)
方法名称写的很明确。
注意点:
1、onSaveInstanceState 和 onPause 调用时机不分前后,但是会在 onStop之前;
2、onRestoreInstanceState 调用时机在 onStart 之后,但是我们可以在 onCreate中判断 Bundle是否为空。官方建议在onRestoryInstanceState中恢复;
3、Activity重启默认恢复数据如,文本框输入数据,ListView滚动位置等。可具体查看每个View的 onSaveInstanceState 和 onRestoryInstatnceState;
4、不想系统配置发生改变时,Activity被重新创建,可以在配置文件增加 configChanges 属性,多属性使用 "|"进行分割,常用的有 locale (系统语言改变)、orientation(横竖屏)、keyboardHidden(键盘可访问性)
配置后,当系统配置发生改变,不会重新创建Activity,而是走 onConfigurationChanged,其中 newConfig保存了当前系统属性。都是一些固定值。如比 横竖屏 1 和 2表示。
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }
个人理解,keyboardHidden 指的是用户比如通过蓝牙连接了外部键盘。