java - 如何在 Activity 恢复时重置倒计时计时器?

标签 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();
       }
   };

所以,当游戏结束时,我会显示一个弹出窗口,按下“确定”后就会进入下一个级别。我调用弹出窗口并设置新值,包括时间和其他一些内容:

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);

但是我的倒计时器总是从旧时间开始,150000ms。如何重置它,导致我更改 timeCount 值不起作用。我不知道为什么。该变量已更改,我确信这一点,但倒数计时器不使用它。

最佳答案

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

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变量。

关于java - 如何在 Activity 恢复时重置倒计时计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815367/

相关文章:

添加 mopub sdk 时出现 Android Studio 错误

java - org.apache.http.conn.HttpHostConnectException : Connection to http://localhost refused

java - 传递微调值

java - 将 GraphStream 图表添加到我的自定义 jPanel 中

java - 在不同的类上使用 db4o

android - 如何在自己的安卓手机上安装自己在安卓市场发布的付费应用?

android - 加载器框架与普通 AsyncTask

java - Android MediaRecorder stop() 未被调用

java - Flink Tumble Window 触发时间

java - gxt gwt 日期字段语言未正确显示