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