这是我的代码:
private Timer mTimer = new Timer();
mTimer.scheduleAtFixedRate(mTask, 0, mSpeed);
当我调用scheduleAtFixedRate()并更改我的mSpeed时,周期不会改变但保持不变。这看起来很正常,因为该方法清楚地说“FixedRate”。
但现在我的问题是:有什么像mTimer.scheduleAtVariableRate?
我正在为我的俄罗斯方块使用这个计时器,速度会在一定的分数下增加。
我尝试取消mTimer并调用相同的方法,但这不起作用:(
答案 0 :(得分:0)
我相信你必须避免使用“scheduleAtFixedRate”,而只是安排计时器在第一段时间之后触发一次。 在你的mTasks中,最后,然后在mSpeed之后再次将自己重新开火。
现在,mSpeed的任何更改都应反映在代码运行之间的更改间隔中。 这是因为调度程序本身不知道对mSpeed的更改,需要使用新值再次调用它。
答案 1 :(得分:0)
我通过重新创建时间任务来修复问题(并再次创建计时器):
mTimer.cancel();
mTimer = new Timer();
mTimer.scheduleAtFixedRate(new TimerTask() { ... }, 0, mSpeed);