有关 onSaveInstanceState() 那点事
有關(guān) onSaveInstanceState() 那點(diǎn)事
我們都知道,按 home 鍵將 APP 壓入后臺(tái)時(shí),會(huì)調(diào)用 onSaveInstanceState() 方法來保存當(dāng)前狀態(tài),并可以在重新回到 APP 時(shí)恢復(fù)。最近做了一些保存和恢復(fù) Activity/Fragment 狀態(tài)的事,總結(jié)了一點(diǎn)經(jīng)驗(yàn)教訓(xùn)。
Activity 與 Fragment 的 savedInstanceState 不能混用。即,在 Fragment 的 onSaveInstanceState() 方法中保存的 bundle,與在 Activity 的 OnCreate() 方法中得到的 bundle 沒有關(guān)系,兩者是獨(dú)立的。但子類中可以通過重寫onSaveInstanceState() 來補(bǔ)充父類中保存的 bundle,Activity、Fragment 皆然。
一些 View 的狀態(tài)會(huì)自動(dòng)保存和恢復(fù),無需手動(dòng)保存/恢復(fù)。比如 EditText 中輸入的文字,按鈕的選中狀態(tài)等。需要注意的是:
-
只有提供了 android:id 屬性的 View 才會(huì)自動(dòng)保存恢復(fù);
-
View 的 visibility 等屬性似乎并不會(huì)被自動(dòng)恢復(fù);
需要保存的是成員變量。Activity/Fragment 中每個(gè)成員變量都會(huì)被銷毀,因此我們?cè)?onSaveInstanceState() 中需要保存的是這些成員變量。
參考
https://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en
轉(zhuǎn)載于:https://www.cnblogs.com/noodleutopia/p/5912588.html
總結(jié)
以上是生活随笔為你收集整理的有关 onSaveInstanceState() 那点事的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python核心编程 第八章
- 下一篇: 怎么在MyEclipse中快速配置spr