Java 在.cancel()之后重新启动计时器
调用.cancel方法后,如何重新启动计时器? 我的计时器在onCreate方法中声明Java 在.cancel()之后重新启动计时器,java,android,Java,Android,调用.cancel方法后,如何重新启动计时器? 我的计时器在onCreate方法中声明 timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { --standby_zaehler; if(standby_zaehler < 0) { rndm_gro
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.scheduleAtFixedRate(新的TimerTask(){
@凌驾
公开募捐{
--扎勒;
if(备用_zaehler<0){
rndm_groesse=备用长度;
random_zahl=r.nextInt(rndm_groesse);
说话(待命[随机]);
对于(;;)
{
备用_zaehler=r.nextInt(60);
如果(待机时间>=15)
打破
}
}
}
}, 1000, 1000);
我打电话到别的地方
timer.cancel()
但我想在取消后重新启动,但不知道如何启动。有办法吗?可以这样做,每次取消计时器后要重新运行计时器时,都要重新实例化正在运行的计时器任务,因为取消计时器也会取消与其关联的计时器任务。 此外,您需要创建一个布尔值来检查计时器是否开启,因此如果开启,只需取消它,如果没有,则重新实例化任务和计时器(两者),否则您将得到可能正在处理的异常 我写了这段代码作为一个例子,我试过了,效果很好
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;
}
}
不,医生是这么说的。创建一个新的timerput方法中的整个第一个代码块,然后调用该方法来启动timerAccording文档:cancel()取消TimerTask并将其从计时器队列中移除。当它从计时器队列中删除时,您必须创建一个新的队列。或者取消您的计时器任务