2015-07-20 89 views
0

我正在开发一个android俄罗斯方块游戏。而在如何更改java定时器的时间间隔

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

上午执行

timer.scheduleAtFixedRate (task, 0L, milliseconds); 

当我做这个错误地或某事发生了一个IllegalStateException? 我需要取消计时器并创建一个新计时器,因为除非您为其安排新任务,否则无法更改计时器的时间间隔,对吗?

我看了一个帖子here,这里是其中一个答案的话:

定时器只能安排一次。如果调用cancel()时没有发生IllegalStateException,但当您尝试重新计划计时器时,只需重新实例化计时器,然后对其进行计划即可。否则,我不确定。

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

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

+0

我没有提供堆栈跟踪,因为我不知道如何在问题编辑器中执行此操作。谁能帮我? – Sweeper

+0

你引用的答案是无稽之谈。 – EJP

+0

真的吗?我认为这很有用。 – Sweeper

回答

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全局和改变,也许这将是一个更好的解决方案。

+0

你的意思是将此添加到setTimerInterval方法?但是milliseonds是一个参数,我怎样才能使这个全球? – Sweeper

+0

我的意思是使用这个而不是一个计时器。延迟后可以在X毫秒后运行任务 –

+0

噢,好的。我会尝试的。谢谢! – Sweeper

0

如何更改Java定时器的时间间隔

的Java Timers没有间隔。定时器任务有间隔。

解决方法:取消并重新安排TimerTask而不是Timer