具有通用取消命令的多个CountDown计时器

时间:2014-06-03 12:18:18

标签: android timer countdowntimer

我回来问另一个问题:)

在我正在制作的应用中,我需要一个选择器来选择4个不同倒数计时器中的一个,例如round1,round2等。

但我有两个相同来源的问题。使用默认的countdowntimer实现,它不涉及将其命名为round1但作为直接倒数计时器运行,我可以在onPause中使用
取消它     coutdowntimer.cancel();

但在将它命名为round1后,我再也无法暂停它和round1.cancel();出现未定义。

我已经度过了昨天的大部分时间,直到凌晨3点试图找到一个解决方案,我认为我通过让我的计时器最终完成它但它仍然无法工作。

在考虑了这个问题之后,一旦我解决了这个问题,我就不得不在我的onpause中实现一个if语句,为了保持我的代码干净,我宁愿不这样做。

有没有办法实现一个通用取消命令来取消root countdowntimer函数,无论它运行的实际名称如何。 例如

public void canceltimers(){
//if round1,2,3,4 is runnng, cancel the main countdowntimer thread altogether. 
countdowntimer.Cancel();
}

感谢任何帮助,这是我当前的计时器代码。

CountDownTimer round1 = new CountDownTimer(30000, 1000) {
        public void onTick(long millisUntilFinished) {
            textview4.setText("" + millisUntilFinished / 1000);
        }

        public void onFinish() {
          endsequence();
        }
          };

         CountDownTimer round2 = new CountDownTimer(20000, 1000) {

         public void onTick(long millisUntilFinished) {
         textview4.setText("" + millisUntilFinished / 1000);
              }

         public void onFinish() {
         endsequence();
              }
                };
   // round1.start();

我还没有为级别选择实现我的if语句,但是会与此类似

 if (level == 1){
 round1.start();}
 if (level == 2){
 round2.start();}

到目前为止,我已经尝试将其设为最终版,没有任何乐趣。 我试过了

round1.cancel();
没有快乐。以及我能想到或发现的倒计时器的每一个实现。

现在作为一个请求,我不像你们大多数人那样令人惊讶,所以如果你能尝试给出一个实现的例子,那将是值得赞赏的,感谢您的关注和感谢您的时间和帮助

菲尔

1 个答案:

答案 0 :(得分:0)

制作一个计时器。向此计时器添加多个timertasks。定义COUNTDOWN_TIME。

Timer mTimer = new Timer();

mTimer.schedule(new TimerTask() {
                @Override
                public void run() {
                   //execute code when the COUNTDOWN_TIME has ran out.
                }
            }, COUNTDOWN_TIME);
        }

//cancels all sceduled/running TimerTasks
mTimer.cancel();