【发布时间】:2014-03-14 19:25:37
【问题描述】:
想象以下场景:
- 将片段 A 推送到 BackStack 上
- 将片段 B 推送到 BackStack 上
- 将片段 C 推送到 BackStack 上
片段 B 在调用其 onResume is 方法时尝试发出异步 Web 请求。
Fragment C 有一个名为“Clear Backstack”的按钮,它通过调用 popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) 来清除 backstack。
当调用 PopBackStackImmediate 时,它会一个一个地弹出 Fragments,直到堆栈被清除。当每个片段被弹出时,片段的 onResume 方法就会被调用。对于 Fragment B,我不希望触发异步 Web 请求,因为它会在弹出后立即被销毁/删除(因为正在清除整个后台堆栈)。
在这种情况下,如何检测整个 backstack 是否正在折叠并在 OnResume 方法中跳过 Fragment B 上的异步 Web 请求?注意:如果使用“后退”按钮弹出/显示片段 B,我仍然希望执行异步 Web 请求。
注意:我使用的是最新的兼容性/支持库。
【问题讨论】:
标签: android fragment android-lifecycle onresume back-stack