gpt4 book ai didi

android - 如何确定我的一项 Activity 是否在前台

转载 作者:IT老高 更新时间:2023-10-28 13:23:33 25 4
gpt4 key购买 nike

我已经实现了一个由 AlarmManager 触发的 BroadcastReceiver。 AlarmManager 在 BOOT_COMPLETED 上初始化。所以我必须在 list 中声明接收者。

我的问题是,我希望 BroadcastReceiver 只在我自己的 Activity 都不在前台时(也就是用户没有与我的应用程序交互)时做某事。我从远程服务器中提取信息,并且不想通知用户他当前是否在我的应用程序中。

到目前为止,我还没有设法确定我的应用程序是否在前台。有没有办法做这样的事情? ActivityManager 告诉我我的应用程序是否正在运行,但不告诉我它是否在前台。

问题与此处描述的几乎相同:Inform Activity from a BroadcastReceiver ONLY if it is in the foreground

解决方案:

在评估了几种解决方案后,我想快速概述一下我认为处理后台/前台 Activity 的最佳方法。

首选方法是在 Activity 的 onResume 方法中注册广播接收器,并在 onPause 上的 Activity 中取消注册。任何服务或其他背景元素都需要发送带有特定操作的广播 Intent ,您的 Activity 将拦截该操作。

如果您的 Activity 在前台,它将注册其 Intent 接收器,并且能够直接处理从您的服务发送的 Intent 。如果它不在前台,它将不会收到 Intent ,但调用广播的服务将知道没有人拦截其广播 Intent ,并且能够自行处理。例如,它可以启动所需的 Activity 、显示通知等。

最佳答案

以下答案:“Is application running in background”,总结了可用于背景/前景检查的解决方案。

注意:
以前此答案建议使用 ActivityManager.getRunningAppProcesses(),但该方法似乎并不完全可靠,不鼓励使用。详情请查看以上链接。

关于android - 如何确定我的一项 Activity 是否在前台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314969/

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