倒数计时器android秒不准确

时间:2016-02-11 23:44:59

标签: android timer countdowntimer

我的倒数计时器以HH:mm:ss格式计算end_time和current_time之间的差值。我注意到,只要计时器开始显示,秒数总是四舍五入,这意味着它总是从HH开始计算自身:59以后。有没有办法让秒显示正确的剩余秒数?

1 个答案:

答案 0 :(得分:0)

您可以为此目的创建自定义CountDownTimer。比如说:

    public class MyCountDownTimer extends CountDownTimer {
  public MyCountDownTimer(long millisInFuture, long interval) {
  super(millisInFuture, interval);
  }

  @Override
  public void onFinish() {
    my_textview.setText("Time's up!");     
  }

  @Override
  public void onTick(long millisUntilFinished) {
    my_textview.setText("" + millisUntilFinished / 1000);   //Shows no. of seconds left
    //Uses a textview to update status                                                        
  }
}

在您的活动中,您可以将计时器称为:

    CountDownTimer countDownTimer = new MyCountDownTimer(millisInFuture, interval);
//In this case
//CountDownTimer countDownTimer = new MyCountDownTimer(50000, 1000); 

此处millisInFuture是启动计时器时的“特定时间间隔剩余时间”(以毫秒为单位)。假设在这种情况下剩下的时间是50秒。然后,此值将为50000

interval是您希望提供更新的时间(以毫秒为单位)。 (即如果您使用1000作为间隔,计时器将每1秒更新一次)

所以在这种情况下,

onTick(long millisUntilFinished) 
每隔一秒调用

,这给你倒数计时器的剩余时间,以毫秒为单位。 millisUntilFinished参数在第一次调用时给你49000(即剩下49秒),依此类推。

当计时器倒计时时,调用onfinish()。

您可以以任何方式显示此信息。我只是在TextView中显示它。

剩下的唯一步骤就是实际启动倒数计时器。 countDownTimer.start();

当你没有想要启动时,比如59,你可以在每次设置文本时用one增加值。

希望它有所帮助!