在我的应用程序中,我有一个片段,用于呈现从服务器获取的模型对象。模型类实现Parcelable
,因此当设备旋转时,我将模型保存在onSaveInstanceState()
中,然后在onCreate()
中加载模型。如果savedInstanceState
捆绑包不包含onCreate()
中的模型,我会再次发出网络请求。
我的问题是:通过让它实现Parcelable
并将其保存在onSaveInstanceState()
中来保持模型的状态更好吗?或者简单地设置Fragment
的setRetainInstanceState(true)
更好吗。
在我看来,setInstanceState应该只在特殊情况下使用,而onSaveInstanceState()应该用作保持片段状态的标准方法。这是保持所有安卓组件状态的常用方法。将片段保存在内存中可能会导致诸如奇怪的视图行为和内存泄漏之类的情况。
API指南建议使用保留的无头数据片段。