gpt4 book ai didi

android - 从后台弹出时检测 fragment 是否在 OnResume 中真正可见

转载 作者:行者123 更新时间:2023-11-29 21:12:21 25 4
gpt4 key购买 nike

想象一下以下场景:

  1. 将 fragment A 插入 BackStack
  2. 将 fragment B 插入 BackStack
  3. 将 fragment C 插入 BackStack

fragment B 在其 onResume is 方法被调用时尝试发出异步 Web 请求。

Fragment C 有一个名为“Clear Backstack”的按钮,它通过调用 popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) 清除后台堆栈。

当调用 PopBackStackImmediate 时,它​​会一个接一个地弹出 Fragment,直到堆栈被清除。随着每个 fragment 被弹出, fragment 的 onResume 方法被调用。对于 fragment B,我不希望触发异步 Web 请求,因为它会在弹出后立即被销毁/删除(因为正在清除整个后台堆栈)。

在这种情况下,我如何检测整个后台堆栈是否正在折叠并在 OnResume 方法中跳过 fragment B 上的异步 Web 请求?注意:如果使用“后退”按钮弹出/显示 fragment B,我仍然希望执行异步 Web 请求。

注意:我使用的是最新的兼容性/支持库。

最佳答案

选项 1:

您是否确定了正在调用哪些其他生命周期方法 - 如果它仅在恢复时,则将异步调用在生命周期中进一步向下移动(例如 onCreateView 或 onAttach),以便仅在以正常方式移动时调用它.

选项 2:

当调用 onResume 时,您可以对已经销毁的 fragment 执行 getFragmentByTag。如果这是 null,那么您可以假设正在执行的操作是销毁。

我觉得这个很丑。

选项 3:

让 C 将一些标志传递给控制 Activity (我们称之为 Main),向上移动异步调用,当 B 想要执行 Web 请求时,让它调用 main 来执行此操作。如果 C 设置了“I'm Destroying”标志,则不执行请求。

关于android - 从后台弹出时检测 fragment 是否在 OnResume 中真正可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com