为什么使用保留的片段来保持状态通过配置更改?

时间:2015-03-25 18:45:13

标签: java android fragment lifecycle

我阅读了很多关于活动和片段生命周期,配置更改以及如何保持状态的信息。

根据我收集的信息,似乎google正式建议保留片段以保持状态,即使必须保留的数据来自例如活动。

我想知道,为什么这种方法比将状态保存在由应用程序集中管理的单例中更好? 根据我的理解,没有应用程序就不能有任何片段/活动,为什么不使用它?

我知道单身人士不赞成,但在我看来,这对于这个问题来说是一个很好的解决方案,而不是为了保持状态而创造(和滥用?)隐形片段。

1 个答案:

答案 0 :(得分:3)

  

为什么这种方法比将状态保持在由应用程序集中管理的单例中更好?

对于应用程序范围的状态,单例是可以的。但是,可能存在零个,一个或多个特定Activity子类的实例,这使得单例方法成为问题。另外,总的来说,由于他们倾向于导致内存泄漏,我们尽量不再需要任何单身人士。

形容词“保留”的原因是保留的片段基于旧的onRetainNonConfigurationInstance(),这是一种在配置更改时将任意对象从旧活动传递到新活动的方式。保留的片段有助于围绕“保留实例”构造实施更好的编码实践。

实际上,在可能的情况下,您的州应该进入已保存的实例状态Bundle,因为这不仅有助于配置更改,而且还有用户在您的流程因低流量而终止后返回任务记忆条件。