我很难找到真正的解决方案。我搜索了很多,但我找不到任何好的解决方案来解决我的问题。
我想在用户单击通知时执行一些操作。所以我必须检查应用程序是在后台还是前台。如果它位于前台,则哪个活动正在运行?必须有简单的方法来找到这个。
请指导我。任何帮助将不胜感激。
您应该在应用程序的两个位置侦听:
- 以显示提醒。
- 在服务中显示通知,使用以下解决方案之一检查活动是否正在运行。
您有几个答案总结了解决方案:
安卓:如何检查活动是否正在运行?
检查安卓应用程序是否在后台运行
因为如果应用程序在后台,则显示通知,否则显示警报。
然后,您不关心"应用程序是在后台还是前台"或"如果它在前台,则哪个活动正在运行"。
您只需关心事件发生时,前台 UI 会处理它(如果有前台 UI),或者显示Notification
。
一种方法是使用有序广播,正如我几年前在博客上写的那样。下面是演示这一点的示例应用。基本上,服务(?)发送有序广播。当 UI 位于前台时,UI 具有该广播的高优先级接收器,它会中止广播并使用事件。您还有一个低优先级接收器,该接收器仅在 UI 未使用事件时才获得控制权,该接收器将显示Notification
。