use*_*129 10 android background
我正在尝试使用Android实现以下功能:
当应用程序处于后台时,线程会立即轮询服务器以检索数据并通知用户新数据是否可用.我正在使用服务,很好.
当应用程序处于"活动"使用状态时,即其中一个活动可见时,轮询应该停止,因为它可能会干扰其他用户操作.
我不明白如何检测应用程序的"活动"或"背景"使用之间的转换.onResume()活动方法似乎没有帮助,因为无论如何,活动可以在"活动"使用期间隐藏或可见.我的理解是应用程序本身并没有区分两个状态.
按下HOME按钮时是否可以相关?还有另一种方法可以区分吗?
我在考虑相当于iPhone的app委托方法applicationDidEnterBackground.这是用Android思考的正确方法吗?或者我应该使用另一种方法?
谢谢.
我将参考ActivityLifecycle。在两者之间onResume,onPause您的Activity内容是“活动的”,即它位于屏幕上并且用户可以与其交互。如果您的活动的onPause方法被调用,那么您应该假设它不再“活动”,并且用户无法再与其交互,直到onResume再次调用。如果您希望在服务中跟踪这一点,则必须手动执行此操作。
这可能最容易通过调用服务中的方法来实现,Activity#onResume该方法会增加计数器或设置标志并onPause恢复该更改。如果您有多个活动,那么您很可能需要一个计数器(可能是一个 )AtomicInteger,并使用它来确定何时应该恢复轮询。
当计数器达到 0 时,我可能会等待一小段时间,重新检查它,如果它仍然是 0,则恢复轮询。这可以解释一项活动onPause与另一项活动之间的差距onResume。
| 归档时间: |
|
| 查看次数: |
4387 次 |
| 最近记录: |