如何在活动恢复时重置CountDownTimer?

时间:2013-07-23 16:05:50

标签: java android

我没有为我的倒数计时器使用常数值,导致每个下一级别的时间不同。所以我使用设置在150000的timeCount变量作为第一级:

    long timeCount = 150000;

public String formatTime(long millis) {  
                    String output = "00:00";  
                    long seconds = millis / 1000;  
                    long minutes = seconds / 60;  

                    seconds = seconds % 60;  
                    minutes = minutes % 60;  

                    String sec = String.valueOf(seconds);  
                    String min = String.valueOf(minutes);  

                    if (seconds < 10)  
                        sec = "0" + seconds;  
                    if (minutes < 10)  
                        min= "0" + minutes;  

                    output = min + " : " + sec;  
                    return output;
                }

我的计时器:

public class MyCount extends CountDownTimer {
         public MyCount(long millisInFuture, long countDownInterval) {
             super(millisInFuture, countDownInterval);
         }

         public void onFinish() {


         }
         public void onTick(long millisUntilFinished) {
             vreme.setText("" + millisUntilFinished / 1000);
         }
         }
    // New timer for 40 minutes, starts after initialization
   MyCount brojacVremena = new MyCount(timeCount, 1000) 
   {
       // Updates the text on your "scoreboard" every second
       public void onTick(long millisUntilFinished) 
       {
           vreme.setText("" + formatTime(millisUntilFinished));
       }

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

因此,当游戏结束时,我会出现一个弹出窗口,按下OK后下一级别会启动。我打电话给弹出窗口并设置新值,时间和其他一些东西:

Intent i = new Intent(Kviz.this, Popup_nivoi.class);
            if(level==2){
                numberOfQuestions = 13;
                timeCount = 160000;
                greska = 7;
                level++;
}
brojacVremena.cancel();
            startActivityForResult(i, MY_REQUEST2);

但我的倒数计时器总是从旧时代开始,即150000毫秒。如何重置它,导致我更改timeCount值不起作用。我不知道为什么。该变量已更改,我知道肯定,但倒数计时器不使用它。

1 个答案:

答案 0 :(得分:2)

您无法重置已创建的时间CountDownTimer它是不可变对象,而您的timeCount varibale仅在创建此对象时使用一次。所以你需要做的就是用新的时间创建另一个计时器。

UPD:以下是一些代码

public class MyCount extends CountDownTimer {
     public MyCount(long millisInFuture, long countDownInterval) {
         super(millisInFuture, countDownInterval);
     }

     public void onFinish() {
         finish();
     }

     public void onTick(long millisUntilFinished) {
         vreme.setText("" + formatTime(millisUntilFinished));
     }
}
MyCount brojacVremena = new MyCount(timeCount, 1000);

然后当你需要新的计时器时,你必须写

brojacVremena = new MyCount(timeCount, 1000);

使用新的timeCount变量。