.cancel()后重启计时器

时间:2014-09-10 18:00:54

标签: java android

在调用.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();

但是我想在取消后再次启动但不知道如何。有办法吗?

1 个答案:

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