我正在开发一款Android俄罗斯方块游戏。执行
时发生IllegalStateExceptiontimer.scheduleAtFixedRate (task, 0L, milliseconds);
在
public void setTimerInterval (int milliseconds) {
timer.cancel ();
timer = new Timer ();
timer.scheduleAtFixedRate (task, 0L, milliseconds);
}
我这样做错了什么? 我需要取消定时器并创建一个新定时器,因为我不能改变定时器的间隔,除非你为它安排一个新任务,对吗?
我阅读了帖子here,以下是其中一个答案的引用:
计时器只能安排一次。如果在调用cancel()时没有发生IllegalStateException,但是当您尝试重新安排计时器时,只需重新安排计时器,然后安排它。否则,我不确定。
我没有使用该问题的接受答案,因为它是关于暂停和恢复计时器。
我重新实例化了如上所示的计时器,但仍然存在IllegalStateException。
答案 0 :(得分:1)
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
// do the task here
handler.postDelayed(this, milliseconds); // set time here to refresh textView
}
});
让milliseconds
全局并改变它,也许这将是一个更好的解决方案。
答案 1 :(得分:0)
如何更改java计时器的间隔
Java Jul 20, 2015 3:32:06 PM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
没有间隔。计时器任务有间隔。
解决方案:取消并重新安排Timers
,而不是TimerTask
。