一、onSaveInstanceState & onRestoreInstanceState
(1)使用场景
当我的APP处在前台,能与用户交互的情况下,出现下述的突发事件时,只有点击back键,onSaveInstanceState方法不会调用。但都执行onPause();onSaveInstanceState的调用是处于onPause和onStop之间;能保证的是onSaveInstanceState方法会在onStop之前调用,但是是否在onPause之前就不一定了。onRestoreInstanceState的调用时机在onStart之后。
- 点击back键
- 点击锁屏键
- 点击home键
- 其他APP进入前台
- 启动了另一个Activity
- 屏幕方向旋转
- APP被Kill
- 出现crash时
结论:
google工程师们对onSaveInstanceState如此设计就是让其完成对一些临时的、非永久数据存储并进行恢复。什么样的数据属于临时数据呢?举个例子,比如EditText中输入的内容,CheckBox是否勾选,ScrollView的滑动位置,目前视频的播放位置等等。
注意:
(1)正常情况下Activity的创建和销毁不会调用onSaveInstanceState和onRestoreInstanceState方法。
(2)Android的View本身自己就实现了onSaveInstanceState方法,这些控件自己就具有保存临时数据和恢复临时数据的能力。
例如TextView中的部分源码:<