Android:如何知道应用何时进入或“后台”模式?

时间:2010-07-20 06:54:40

标签: android background

我正在尝试使用Android实现以下功能:

  • 当应用程序处于后台时,线程会立即轮询服务器以检索数据并通知用户新数据是否可用。我正在使用服务,很好。

  • 当应用程序处于“活动”使用状态时,即其中一个活动可见时,轮询应该停止,因为它可能会干扰其他用户操作。

我不明白如何检测应用程序的“活动”或“后台”使用之间的转换。 onResume()活动方法似乎没有帮助,因为无论如何,活动可以在“活动”使用期间隐藏或可见。我的理解是,应用程序本身并没有区分两种状态 按下HOME按钮时是否可以相关?还有另一种方法可以区分吗? 我在考虑相当于iPhone的app委托方法applicationDidEnterBackground。这是用Android思考的正确方法吗?或者我应该使用另一种方法?

谢谢。

1 个答案:

答案 0 :(得分:3)

我将引用Activity Lifecycle。在onResumeonPause之间,Activity是'有效',即它在屏幕上,用户可以与之互动。如果您的活动的onPause方法被调用,那么您应该假设它不再“活跃”,并且在再次调用onResume之前,用户无法再与其进行交互。如果您希望在服务中跟踪此信息,则必须手动执行此操作。

通过在Activity#onResume中调用服务中的方法来增加计数器或设置标志并在onPause中恢复该更改,这可能是最容易实现的。如果您有多个活动,那么您很可能需要一个计数器,可能是AtomicInteger,并使用它来确定何时应该恢复轮询。

当计数器达到0时,我可能会等待一小段时间,重新检查它,如果它仍然是0,则恢复轮询。这将解释一个活动onPause与另一个活动onResume之间的差距。