【发布时间】:2014-07-07 21:10:57
【问题描述】:
我不完全了解如何重新创建活动及其片段。
想象以下场景:您有一个数据库,活动读取此DB 和一个片段,如果活动对DB 的查询有一些数据,则会创建一个片段。如果DB 为空,片段的onCreateView 将导致异常。
现在想象一下,我们将应用程序移到后台一段时间,并且 Activity 被破坏了。此外,DB 更改并变为空。
如何重建这个结构?活动启动并理解不需要片段,所以一切都很好,或者片段被重新创建,因为它已经被创建了? setRetainInstance(true/false) 对这个过程有影响吗?
让它变得更复杂:我们有几个片段,其中一个决定是否应该以类似的方式创建另一个。碎片娱乐的顺序是什么?是某种竞争条件还是预定义的顺序?
最后,我们如何防止或控制片段的重新创建?我想我有一种情况,有时片段不是在正确的时间重新创建的。如何修复这样的架构?只需使用onStop() 删除片段?
【问题讨论】:
-
快速说明:你永远不应该自己调用
onStop()——这将由Android运行时调用。你可以打电话给finish() -
@user184994,是的,很清楚。我只需将
mFragmentManager.beginTransaction().remove(mFragment).commit()移动到OnStop(),片段就会自动及时删除。
标签: android dynamic android-fragments