如何在变量中存储倒数计时器值?

时间:2013-04-24 22:32:36

标签: java android

所以,我的活动中有一个倒数计时器。现在,我有一个按钮,可以打开另一个活动。单击该按钮时,我需要存储当前倒数计时器值,并从该保存值开始第二个活动中的倒数计时器。我正在考虑使用Intent来消磨时间,但我不知道要传递什么值。我怎样才能做到这一点?我的计时器:

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

在onCreate方法中:

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

            public void onFinish() 
            {

            }
        }.start();
    }

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

2 个答案:

答案 0 :(得分:0)

从CountDownTimer可以看到您正在寻找的信息。如果您不需要非常精确地计算时间,那么您可以将字符串拉出vreme。

假设你想要比这更精确,我建议在计时器启动时保存一个时间戳,然后在你需要知道经过多长时间时得到它与当前时间之间的差异。根据您的需要查看uptimeMillis()elapsedRealtime()

答案 1 :(得分:0)

好的,回答自己。这就是我做的。在我的第一个活动中,我完成了原始帖子中的所有内容,另外我在MyCount方法中添加了这个,就在vreme.setText ....:

currentTime = millisUntilFinished;

之前我在我的活动范围内宣布:

long currentTime;

之后,在我的按钮onClickListener上我做了这个:

Intent i = new Intent(Game1.this, Game2.class);
                i.putExtra("timeCode", currentTime);
                startActivity(i);

之后在我的Game2类的onCreate方法(也声明为long变量):

Bundle extras = getIntent().getExtras(); 
        if(extras !=null) {
           currentTime = extras.getLong("timeCode");
        }

然后这个(它基本上与Game1类中的代码相同,只有一个更改,我传递的变量而不是240000值):

new MyCount(currentTime, 1000) 
    {
        // Updates the text on your "scoreboard" every second
        public void onTick(long millisUntilFinished) 
        {
            vreme.setText("" + formatTime(millisUntilFinished));
        }

        public void onFinish() 
        {

        }
    }.start();
}




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

它就像一个魅力!