我正在开发一款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按钮来滥用计时器,然后一遍又一遍地启动应用程序,因为每次都会有更多的计时器任务! 在Android中我得到了这些:
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
方法,但是如果我在onPause中使用timer.cancel(),整个Timer命名计时器将被取消并且应用程序的启动会在它仍在RAM中时抛出异常。
我也尝试过Handler和Runnables,递归调用自己,但是当我在循环中做一些繁重的计算时,它减慢了循环,不像这里,它是固定的速率! 帮助:S
答案 0 :(得分:0)
我现在使用ScheduledExecutorService,它可以在" onPause"被触发,然后再次实例化,当" onResume"触发了。