我的游戏中有倒数计时器,按下主页按钮后我必须取消它。我试过这个:
@Override
protected void onUserLeaveHint() {
super.onUserLeaveHint();
timer.cancel();
}
但是这对我不起作用,因为我有一些弹出活动和其他一些东西,因为我失去了我的主要活动的焦点,这使得计时器停止,这对我不利。有没有办法只在按下主页按钮时停止我的计时器?
答案 0 :(得分:1)
试试这个
@Override
public void onStop() {
super.onStop();
timer.cancel();
}
答案 1 :(得分:1)
这是一种常见的问题,没有简单的内置解决方案。但很容易写出自己的。
基本解决方案依赖于监控所有活动的onPause()
和onResume()
事件。这通常通过使用实现以下行为的基础Activity
类来完成,并且您的所有活动都会扩展它。
我通常使用我的Application
类来处理知道它何时不在前台的逻辑。因此,在应用程序类中,每次我的活动暂停或恢复时都会调用方法。
暂停时:
恢复时:
所以:
Application
课程将获得一个暂停信号,然后立即获得一个恢复信号。你的计时器不会过期。当计时器到期时,您知道您的应用程序在后台,并且您采取了措施。在您的情况下,这意味着取消游戏计时器。其他人将退出服务器。在我的情况下,我关闭夜间模式。
您可以根据我对类似问题的回答编写代码,该问题显示每个活动如何提醒应用程序其状态:
在该问题中,您可以看到正在设置布尔标志。在您的情况下,您将启动或停止计时器。
有关详细信息,请查看以下相关链接:
答案 2 :(得分:0)
也许你应该在调用活动的onPause或onStop方法时停止你的计时器。