本章主要讨论了 Activity 的生命周期,用 Log 工具来观察它,以及如何在设备配置改变时保存之前的状态
GitHub地址:
GeoQuiz 第三章
1. Activity 的生命周期
在设备运行中,设备配置(如屏幕方向、屏幕密度、屏幕尺寸、语言、键盘类型等)发生改变时,Android 需要自动完成最佳匹配资源的调用, 某些时候(如屏幕旋转时)它必须通过新建一个 Activity 来实现,所以需要重新调用 onCreate() 方法,从而设备配置改变前对 Activity 的更改将消失。
如何在设备配置改变发生时保存数据,在之后返回到改变前的状态呢?
就是通过复写 onSaveInstanceState() 方法保存需要保留的数据,代码如下:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG, "onSaveInstanceState");
outState.putInt(KEY_INDEX,mCurrentIndex);
}
然后在 onCreate() 方法中加入对 savedInstanceState 这个 Bundle 变量的非空判定然后获取其中的数据对 Activity 的数据进行赋值。
if (savedInstanceState != null){
mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, 0);
}
一个完整的包含暂存状态的 Acitvity 生命周期图示如下:
2. Log 工具
使用 Log 方式跟踪程序是一个比较好的习惯,而不是使用 System.out.println()
GitHub Page: kniost.github.io
简书:http://www.jianshu.com/u/723da691aa42