具有可变周期的定期任务

时间:2014-01-19 15:56:08

标签: java timer schedule

这是我的代码:

private Timer mTimer = new Timer();

mTimer.scheduleAtFixedRate(mTask, 0, mSpeed);

当我调用scheduleAtFixedRate()并更改我的mSpeed时,周期不会改变但保持不变。这看起来很正常,因为该方法清楚地说“FixedRate”。

但现在我的问题是:有什么像mTimer.scheduleAtVariableRate?

我正在为我的俄罗斯方块使用这个计时器,速度会在一定的分数下增加。

我尝试取消mTimer并调用相同的方法,但这不起作用:(

2 个答案:

答案 0 :(得分:0)

我相信你必须避免使用“scheduleAtFixedRate”,而只是安排计时器在第一段时间之后触发一次。 在你的mTasks中,最后,然后在mSpeed之后再次将自己重新开火。

现在,mSpeed的任何更改都应反映在代码运行之间的更改间隔中。 这是因为调度程序本身不知道对mSpeed的更改,需要使用新值再次调用它。

答案 1 :(得分:0)

我通过重新创建时间任务来修复问题(并再次创建计时器):

mTimer.cancel();
mTimer = new Timer();
mTimer.scheduleAtFixedRate(new TimerTask() { ... }, 0, mSpeed);