如何检查片段是否对用户可见

How to check if the fragment is visible to user

如何检查 Android 应用中的片段是否对用户可见?

我有一个应用程序,其中 主页 activity 有几个 fragments。其中一个片段监听另一个 activity 从 Home 开始的事件,因此每次我从 Home 回到 Home 时执行一个方法activity。虽然我想要的是仅触发这些事件并执行方法 如果该片段在前台对用户可见。

我尝试了以下方法,但似乎没有任何效果:

  1. isAdded()isVisible() 检查 - 总是 return true 一旦创建片段,无论片段是否对用户实际可见。
  2. getUserVisibleHint() - 这又会 return true 即使我还在另一个 activity。此外,它也已被弃用,因此即使它有效,我也想寻找其他解决方案。

我已经走到了死胡同,无法找到一种实际的工作方法来检查片段是否对用户实际可见,而不仅仅是添加到内存中。

如有任何帮助,我们将不胜感激!

我终于在自己尝试的过程中找到了解决方案:

简单检查 isResumed(),如果片段处于前台和恢复状态,它只会 return 为真。

为了安全起见,检查 isVisible 也会在内部检查 isAdded 并减少条件,所以一个简单的 if-condition:

if (isVisible() && isResumed()) {
    // perform your action here
}

这对我有用!