android - 如何检查片段是否对用户可见
问题描述
如何检查一个片段是否对 Android 应用中的用户可见?
我有一个应用程序,其中Home activity
有几个fragments
. 其中一个片段侦听从Home开始的另一个活动的事件,因此每次我从该活动返回Home时都会执行一个方法。虽然我想要的是仅触发这些事件并在前台对用户可见片段时执行该方法。
我尝试了以下方法,但似乎没有任何效果:
isAdded()
并isVisible()
检查 - 始终true
在创建片段后立即返回,无论片段是否对用户实际可见。getUserVisibleHint()
true
-即使我仍在其他活动中,这也会再次出现。此外,它也已被弃用,因此即使它有效,我也想寻找另一种解决方案。
我已经走到了死胡同,无法找到一种实际的工作方式来检查片段是否对用户真正可见,而不仅仅是添加到内存中。
对此的任何帮助表示赞赏!
解决方案
我在尝试自己时终于遇到了解决方案:
简单检查,isResumed()
如果片段处于前台和恢复状态,它只会返回 true。
为了安全起见,检查isVisible
which 还会在isAdded
内部检查并减少条件,所以很简单if-condition
:
if (isVisible() && isResumed()) {
// perform your action here
}
这对我有用!
推荐阅读
- bash - 如何使用 jq 将环境 bash 变量传递到 json
- flutter - 如何在颤动中发送带有http post multipart请求的对象列表
- flutter - 无法推断类型参数“T”。使用 Map.reduce(max) 时
- sql-server - T-SQL:LIKE 运算符,将字符串与一个值进行比较
- java - 如何使用 Selenium webdriver 获取该复选框是启用或禁用状态?
- java - Maven 依赖类 org.apache.http.client 上的 ClassNotFoundException
- c# - 与 SharePoint 网站的初始连接需要 100 秒
- ruby-on-rails - Rails Regexp::IGNORECASE 同时将精确选项与数字选项匹配也包含在结果中
- python - 如何在 python 3.9.x 中使用 pycdc
- r - 如何动态地 group_by 函数中的数据框变量?