如何更改java计时器的间隔

时间:2015-07-20 09:15:34

标签: java android timer

我正在开发一款Android俄罗斯方块游戏。执行

时发生IllegalStateException
timer.scheduleAtFixedRate (task, 0L, milliseconds);

public void setTimerInterval (int milliseconds) {
    timer.cancel ();
    timer = new Timer ();
    timer.scheduleAtFixedRate (task, 0L, milliseconds);
}

我这样做错了什么? 我需要取消定时器并创建一个新定时器,因为我不能改变定时器的间隔,除非你为它安排一个新任务,对吗?

我阅读了帖子here,以下是其中一个答案的引用:

  

计时器只能安排一次。如果在调用cancel()时没有发生IllegalStateException,但是当您尝试重新安排计时器时,只需重新安排计时器,然后安排它。否则,我不确定。

我没有使用该问题的接受答案,因为它是关于暂停和恢复计时器。

我重新实例化了如上所示的计时器,但仍然存在IllegalStateException。

2 个答案:

答案 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