Android 倒数计时器不断在上一个值和当前值之间迭代

Android countdown timer keeps iterating between previous and current value

您好,我正在开发一款带有倒数计时器的应用程序。单击按钮时,计时器根据用户在文本字段中的输入启动,当我更改文本字段的值并且计时器的新值启动时,它会闪烁并显示前一个倒计时值并对两个值进行倒计时, 在上一个和当前倒计时值之间闪烁。如何让计时器忘记之前的值,只使用当前计时器值。

我尝试使用取消功能,但没有用,我认为它是我的滴答功能中的东西,但我不确定它是什么。

这是我的代码:

   CountDownTimer mcountDownTimer = new CountDownTimer(getmonTime(), 1000) {          // adjust the milli seconds here

                public void onTick(long millisUntilFinished) {

                    long hr1=TimeUnit.MILLISECONDS.toHours( millisUntilFinished);
                    long sub1=hr1*60;
                    long min1=TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished);
                    long sub2=min1*60;


                    timer.setText(""+String.format("%d hr,%d min, %d sec",
                            TimeUnit.MILLISECONDS.toHours( millisUntilFinished),

                            TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)-sub1,
                            TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished)-sub2,
                                    -
                                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));

                }


                public void onFinish() {

                    timer.setText("0");
                }



            };

                    mcountDownTimer.start();






        }


    };

你可能没有取消上一个。

保存 CountDownTimer mcountDownTimer 的实例(顺便说一句,将其重命名为 mCountDownTimer) 在设置新的之前,使用以下方法取消旧的: mCountDownTimer.cancel(); 然后才创建新实例。 例如:

CountDownTimer mCountDownTimer;

@Override
public void onCreate...
...

if (mCountDownTimer != null) mCountDownTimer.cancel();
mCountDownTimer = new CountDownTimer...