倒数计时器,Android

时间:2016-02-14 20:44:36

标签: java android performance android-intent

我在我的应用程序中实现了一个10-1秒倒计时器。我已经在全局声明它并在onCreate函数中实例化。 我实施的代码是:

timer = new CountDownTimer(10000, 1000) {

        public void onTick(long millisUntilFinished) {
          mcountdownText.setText("Time Remaining: " + millisUntilFinished / 1000);
        }

        public void onFinish() {
               // my code.....
        }

    }.start();

有一个小问题,当我运行我的应用程序时,我不知道为什么有些情况下倒数计时器像10,8,7,6,5,4,3,2,1(这里)它跳过了9),有时从9,8,7,6,5,4,3,2,1秒开始正常工作。 如果有人能帮我解决这个错误,那就太好了。 感谢。

3 个答案:

答案 0 :(得分:0)

没有直接的答案,因为计时器应该可以正常工作。 原因可能是异步执行的进程和其他任务,并且会中断计时器的进程。 但是计时器在不同的过程中运行,所以很可能不是这样。

答案 1 :(得分:0)

这是该组件的错误。

Here是一个很好的解决方案。 但是,为了解决它,我写了solution,如果你使用RXJava,here你可以看到使用RXJava2的另一个解决方案

答案 2 :(得分:-1)

也许你应该在启动CountdownTimer之前有一个延迟......

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
    timer = new CountDownTimer(10000, 1000) {

        public void onTick(long millisUntilFinished) {
          mcountdownText.setText("Time Remaining: " + millisUntilFinished / 1000);
        }

        public void onFinish() {
               // my code.....
        }

    }.start();
  }
}, 1000);  // = 1 sec, you can try less if you want to