在android中重新计划定时器
我怎样才能重新安排一个计时器。 我试图取消定时器/时间任务,并使用一种方法重新安排它。 但它显示了一个异常错误:
Exception errorjava.lang.IllegalStateException: TimerTask is scheduled already
我使用过的代码:
private Timer timer = new Timer("alertTimer",true); public void reScheduleTimer(int duration) { timer.cancel(); timer.schedule(timerTask, 1000L, duration * 1000L); }
如果你看到Timer.cancel()上的文档,你会看到:
“取消定时器和所有定时任务,如果有一个当前正在运行的任务,它不会受到影响,这个定时器上没有更多的任务可以被调度,随后的调用什么也不做。
重新计划时,您需要初始化新的Timer:
编辑:
public void reScheduleTimer(int duration) {
timer = new Timer("alertTimer",true);
timerTask = new MyTimerTask();
timer.schedule(timerTask, 1000L, duration * 1000L);
}
private class MyTimerTask extends TimerTask {
@Override
public void run() {
// Do stuff
}
}
事实上,如果你看看取消方法javadoc,你可以看到以下内容:
不干扰当前正在执行的任务(如果存在)。
这会告诉计时器“好吧,现在不再有任务了,但你可以完成你正在做的任务”。 我想你还需要取消TimerTask。
@Eric Nordvik答案运行良好。
我们可以做的一件事是取消先前的定时器事件执行
public void reScheduleTimer(int duration) {
// Cancel previous timer first
timer.cancel();
timer = new Timer("alertTimer",true);
timerTask = new MyTimerTask();
timer.schedule(timerTask, 1000L, duration * 1000L);
}
链接地址: http://www.djcxy.com/p/12999.html
上一篇: Reschedule timer in android
下一篇: Android timer? How