我正试图通过
Android来实现以下目标:
>当应用程序处于后台时,线程会立即轮询服务器,然后检索数据,并通知用户新数据是否可用.我正在使用一个服务,罚款.
>当应用程序处于“活动”状态时,即其中一个活动可见,则轮询应该停止,因为它可能会干扰其他用户操作.
我不明白如何检测应用程序的“活动”或“背景”使用之间的转换. onResume()活动方法似乎没有帮助,因为活动可以在“活动”使用期间被隐藏或可见.我的理解是,应用程序本身并没有使两个国家之间的区别.
按住HOME按钮可以相关吗?还有另外一种办法来区分这个区别吗?
我正在考虑相当于iPhone的应用程序委托方法applicationDidEnterBackground.是Android的正确方法吗?还是用另外一种方法?
谢谢.
解决方法
我将参考
Activity
Lifecycle.在onResume和onPause之间,您的活动是“活动”,即它在屏幕上,用户可以与它进行交互.如果您的活动的onPause方法被调用,那么您应该假定它不再是“活动”,并且在再次调用onResume之前,用户不能与其进行交互.如果您希望在服务中跟踪此操作,则需要手动执行此操作.
这可能是通过在Activity#onResume中调用您的服务中的方法来实现的,该方法会增加一个计数器或设置一个标志,并在onPause中还原该更改.如果你有多个活动,那么你最有可能需要一个计数器,可能是一个AtomicInteger,并且使用它来确定什么时候你应该恢复你的投票.
我可能会等待一段时间,当计数器达到0时,重新检查它,如果仍然是0,则恢复轮询.这将解释一个活动的onPause和另一个onResume之间的差距.