[英]Android: Java Timer instantiated in each “onCreate” method
我正在开发一个Android游戏,但是我面临的问题是,当用户暂停游戏,然后想通过重新启动应用程序而不是从RAM访问它来继续运行时,每次都再次激活同一个计时器。
这是我的计时器:
public void createTimers() {
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
//Stuff here
}
});
}
}, 0, 1000 / 60);
因此,无论何时用户启动应用程序(或在仍在RAM中时重新启动应用程序),都会执行该应用程序:
Timer timer = new Timer();
createTimers();
这样,玩家可以通过按下hombe按钮滥用计时器,然后一次又一次地启动应用程序,因为每次都会有更多的timerTasks! 在Android中,我得到了这些:
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
方法,但是如果我在onPause中使用timer.cancel(),则取消了名为timer的整个Timer并启动了应用程序,而该应用程序仍在RAM中时会引发异常。
我还尝试了递归调用自己的Handlers和Runnables,但是由于我在循环中进行了一些繁重的计算,因此减慢了循环速度,这与此处的固定速率不同! 帮助请:S
我现在使它与ScheduledExecutorService一起使用,可以在触发“ onPause”时将其关闭,而当触发“ onResume”时,只需再次实例化即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.