如何在按下主页按钮时取消定时器?

时间:2014-08-28 14:17:32

标签: java android

我的游戏中有倒数计时器,按下主页按钮后我必须取消它。我试过这个:

@Override
    protected void onUserLeaveHint() {
        super.onUserLeaveHint();
        timer.cancel();
    }

但是这对我不起作用,因为我有一些弹出活动和其他一些东西,因为我失去了我的主要活动的焦点,这使得计时器停止,这对我不利。有没有办法只在按下主页按钮时停止我的计时器?

3 个答案:

答案 0 :(得分:1)

试试这个

@Override
public void onStop() {
     super.onStop();
     timer.cancel();
}

答案 1 :(得分:1)

这是一种常见的问题,没有简单的内置解决方案。但很容易写出自己的。


基本解决方案依赖于监控所有活动的onPause()onResume()事件。这通常通过使用实现以下行为的基础Activity类来完成,并且您的所有活动都会扩展它。

我通常使用我的Application类来处理知道它何时不在前台的逻辑。因此,在应用程序类中,每次我的活动暂停或恢复时都会调用方法。

暂停时:

  • 我开始一个短暂的计时器,比如300毫秒长

恢复时:

  • 我停止该计时器,如果正在运行

所以:

  • 如果您启动了活动B,您的Application课程将获得一个暂停信号,然后立即获得一个恢复信号。你的计时器不会过期。
  • 如果您的应用程序被发送到后台,您将收到暂停信号,并且没有恢复信号。你的计时器将过期。

当计时器到期时,您知道您的应用程序在后台,并且您采取了措施。在您的情况下,这意味着取消游戏计时器。其他人将退出服务器。在我的情况下,我关闭夜间模式。


您可以根据我对类似问题的回答编写代码,该问题显示每个活动如何提醒应用程序其状态:

在该问题中,您可以看到正在设置布尔标志。在您的情况下,您将启动或停止计时器。

有关详细信息,请查看以下相关链接:

答案 2 :(得分:0)

也许你应该在调用活动的onPause或onStop方法时停止你的计时器。