在调用.cancel方法后如何重新启动计时器? 我的计时器是在我的onCreate方法中声明的。
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
--standby_zaehler;
if(standby_zaehler < 0) {
rndm_groesse = stand_by.length;
random_zahl = r.nextInt(rndm_groesse);
speakOut(stand_by[random_zahl]);
for (;;)
{
standby_zaehler = r.nextInt(60);
if (standby_zaehler >= 15)
break;
}
}
}
}, 1000, 1000);
我打电话的其他地方
timer.cancel();
但是我想在取消后再次启动但不知道如何。有办法吗?
答案 0 :(得分:0)
您可以通过在取消计时器后重新实例化每次要重新运行的TimerTask的方式来实例化它,因为取消计时器也会取消与之关联的TimerTask。 另外,您需要进行布尔检查计时器是否打开,以便在打开计时器时将其取消,如果没有,则重新实例化任务和计时器(两者),否则您将获得以下异常信息:大概在讲 我为您编写了此代码作为示例,并尝试了一下,效果很好
Timer timer;
boolean timerOn = false;
@FXML
private void setTimer(ActionEvent event) {
if (timerOn) {
timer.cancel();
timerOn = false;
} else {
timer = new Timer();
TimerTask runBlinking = new TimerTask() {
@Override
public void run() {
blinkCircle();
}
};
timer.schedule(runBlinking, 1, Long.parseLong(txt_seconds.getText()));
timerOn = true;
}
}