Android 安卓:如何知道应用程序何时进入或;背景“;模式
我正试图通过Android实现以下目标:Android 安卓:如何知道应用程序何时进入或;背景“;模式,android,background,Android,Background,我正试图通过Android实现以下目标: 当应用程序在后台时,线程会不时轮询服务器以检索数据,并通知用户是否有新数据可用。我正在使用一种服务,很好 当应用处于“活动”使用状态时,即其活动之一可见,轮询应停止,因为它可能会干扰其他用户操作 我不明白如何检测应用程序的“活动”或“后台”使用之间的转换。onResume()活动方法似乎没有帮助,因为活动在“活动”使用期间可能隐藏或可见。我的理解是,应用程序本身并不能区分这两种状态。 当按下HOME(主页)按钮时,它是否相关?有没有其他方法来进行区分
- 当应用程序在后台时,线程会不时轮询服务器以检索数据,并通知用户是否有新数据可用。我正在使用一种服务,很好
- 当应用处于“活动”使用状态时,即其活动之一可见,轮询应停止,因为它可能会干扰其他用户操作
当按下HOME(主页)按钮时,它是否相关?有没有其他方法来进行区分?
我正在考虑一种类似于iPhone的应用程序委托方法
applicationidenterdbackground
。这是Android的正确思维方式吗?还是我应该用另一种方法
谢谢。我要参考一下。在
onResume
和onPause
之间,您的活动
处于“活动”状态,即,它在屏幕上,用户可以与其交互。如果您的活动的onPause
方法被调用,那么您应该假设它不再是“活动”的,并且在再次调用onResume
之前,用户不能再与其交互。如果您希望在您的服务中跟踪这一点,则必须手动执行此操作
在Activity#onResume
中调用服务中增加计数器或设置标志的方法,然后在onPause
中恢复更改,可能最容易实现这一点。如果您有多个活动,那么您很可能需要一个计数器,可能是一个AtomicInteger
,并使用它来确定何时恢复轮询
当计数器达到0时,我可能会等待一小段时间,重新检查它,如果仍然为0,则恢复轮询。这将解释一个活动的
onPause
和另一个活动的onResume
之间的差距,类似的:我最终只在根活动上执行了此操作:一旦根活动消失(因为应用程序离开或后续活动覆盖了它),我就会触发服务。正如您所建议的,我随后触发计时器,然后开始轮询。如果根活动在计时器过期之前重新出现,则服务将停止。我勾选你的答案,因为它对我有帮助,谢谢。问题的答案没有给出。。。问题是你如何认识到整个应用程序都是在后台运行的,而不仅仅是一个活动