【发布时间】:2012-07-21 18:58:19
【问题描述】:
为您的所有Fragments 使用Fragment.setRetainInstance() 以摆脱处理Fragments 娱乐、保存实例状态等的好习惯吗?为什么不呢?
【问题讨论】:
标签: android
为您的所有Fragments 使用Fragment.setRetainInstance() 以摆脱处理Fragments 娱乐、保存实例状态等的好习惯吗?为什么不呢?
【问题讨论】:
标签: android
是的,如果必须保留配置更改,您可以将它与不在后台堆栈中的片段一起使用。它只是让事情变得更简单。
【讨论】:
setRetainInstance(true)
这并不总是好的,不。通过保留该实例,您是在告诉'ye old Android 为您提供与 Fragment 完全相同的实例,即片段的 onDestroy 永远不会被调用,而是 onAttach(ed) 和 onDetach(ed)。
通常,由于方向更改(例如),您需要重新排列视图以利用不同的屏幕比例,并且让您的片段保持其状态将意味着框架不会尝试使用您的例如,如果以纵向模式启动,则“风景友好”的视图。
onRetainInstance 的影响是微妙的,它不是灵丹妙药。小心使用。
【讨论】:
setRetainInstance(true)
setRetainInstance(true),它的onCreateView()方法也会被再次调用,(因此它将使用新的配置再次布局。