【发布时间】:2014-10-17 08:36:31
【问题描述】:
我编写了一个代码来启动 Activity A 到 Activity B。Activity A 和 B 都有片段实现。
场景:如果 Activity A 频繁启动包含 Fragment 的 Activity B,那么大多数时候它错过了 Fragment.onDetach..我检查了日志,通常它会给我以下覆盖方法日志:
- 附加上
- 列表项
- OnCreatView
- onViewCreate 然后按设备返回按钮
- 暂停
- onStop
- onDestroyView
- onDetach
现在我从 Activity B 按下设备返回按钮,该按钮再次启动 Activity A,然后它启动 Activity B 并经常重复相同的序列,然后日志序列按以下顺序更改:
- 附加上
- 列表项
- OnCreatView
- onViewCreate 然后按设备返回按钮
- 暂停
- onStop
- onDestroyView 并重复使用
- onAttach 没有 onDetach
有时它也会在 onPause 之后重复相同的行为。
我正在使用
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment).addToBackStack(null).commitAllowingStateLoss(); to add fragment in Activity.
有什么我遗漏的......有什么建议吗?
【问题讨论】:
-
所有片段事务都是异步的,也许片段管理器优化了该行为并且不分离片段只是为了在此之后重新附加它?
-
@pskink 再次重新启动相同的片段..任何建议!
-
重新启动?对不起,我不明白
-
@dominik4142 是的,但如果想显式调用 onDetach 怎么办?
-
@pskink 因为活动共享一些公共数据,并且一次只能由一个客户端更新......但这里为同一个类创建了两个实例。
标签: android android-activity android-fragments activity-lifecycle fragment-lifecycle