本章主要討論了 Activity 的生命周期,用 Log 工具來觀察它,以及如何在設備配置改變時保存之前的狀態(tài)
GitHub地址:
GeoQuiz 第三章
1. Activity 的生命周期
在設備運行中,設備配置(如屏幕方向、屏幕密度、屏幕尺寸、語言、鍵盤類型等)發(fā)生改變時,Android 需要自動完成最佳匹配資源的調(diào)用, 某些時候(如屏幕旋轉(zhuǎn)時)它必須通過新建一個 Activity 來實現(xiàn),所以需要重新調(diào)用 onCreate() 方法,從而設備配置改變前對 Activity 的更改將消失。
如何在設備配置改變發(fā)生時保存數(shù)據(jù),在之后返回到改變前的狀態(tài)呢?
就是通過復寫 onSaveInstanceState() 方法保存需要保留的數(shù)據(jù),代碼如下:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG, "onSaveInstanceState");
outState.putInt(KEY_INDEX,mCurrentIndex);
}
然后在 onCreate() 方法中加入對 savedInstanceState 這個 Bundle 變量的非空判定然后獲取其中的數(shù)據(jù)對 Activity 的數(shù)據(jù)進行賦值。
if (savedInstanceState != null){
mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, 0);
}
一個完整的包含暫存狀態(tài)的 Acitvity 生命周期圖示如下:
完整的 Activity 生命周期
2. Log 工具
使用 Log 方式跟蹤程序是一個比較好的習慣,而不是使用 System.out.println()
GitHub Page: kniost.github.io
簡書:http://www.itdecent.cn/u/723da691aa42