码迷,mamicode.com
首页 > 其他好文 > 详细

有关 onSaveInstanceState() 那点事

时间:2016-09-27 14:54:13      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

有关 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

有关 onSaveInstanceState() 那点事

标签:

原文地址:http://www.cnblogs.com/noodleutopia/p/5912588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!