Mor*_*itz 59 android broadcastreceiver
我已经实现了一个由AlarmManager触发的BroadcastReceiver.AlarmManager在BOOT_COMPLETED上初始化.所以我必须在清单中声明接收器.
我的问题是我希望BroadcastReceiver只在我自己的活动都不在前台时做某事(也就是说用户没有与我的应用程序交互).我从远程服务器提取信息,并且不想通知用户他当前是否在我的应用程序中.
到目前为止,我还没有找到一种方法来确定我的应用程序是否在前台.有没有办法做这样的事情?ActivityManager告诉我我的应用程序是否正在运行,但不是它是否在前台.
问题与此处描述的几乎相同:只有在广播接收器处于前台时才通知它
解:
在评估了几个解决方案后,我想快速概述一下我认为在后台/前台处理活动的最佳方法.
首选方法是在活动的onResume方法中注册广播接收器,并在onPause上的活动上注销它.任何服务或其他背景元素都需要通过您的活动将拦截的特定操作发送广播意图.
如果您的活动位于前台,它将使其意向接收者注册,并能够直接处理您的服务发送的意图.如果它不在前台,它将不会接收到意图,但是调用广播的服务将知道没有人截获其广播意图并且能够自己处理它.例如,它可以启动所需的活动,显示通知等.
Ido*_*lon 27
以下答案:" 应用程序是否在后台运行 ",总结了可用于后台/前台检查的解决方案.
注意:
以前这个答案建议使用ActivityManager.getRunningAppProcesses(),但是这种方法似乎不完全可靠,不鼓励使用它.查看上面的链接了解详细信息.
Com*_*are 12
您的活动可以跟踪它自己的状态,看它是否在前台(将布尔设置为truein onStart(),falsein onStop()).唉,这个布尔值不会Activity自动提供给你.
| 归档时间: |
|
| 查看次数: |
64896 次 |
| 最近记录: |