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