嗨,我正在尝试取消On-tick功能中的倒数计时器,它在棒棒糖上工作正常,但在Kitkat及以下版本中却无法正常工作。如何从OnTick()函数中取消它。

private void startTimer(final int minuti) {

        countDownTimer = new CountDownTimer(60 * minuti * 1000 + sec * 1000,
                500) {


            @Override
            public void onTick(long leftTimeInMilliseconds) {


        CountDownTimer.cancel();

            }

            @Override
            public void onFinish() {

            }
        }.start();

    }

最佳答案

如果以某种方式用自己的countdowntimer.cancel方法调用CountDownTimer对象的onTick,它将无法正常工作!

解决问题的最简单方法是定义另一个CountDownTimer,与主要的相同,以便检查调用countdowntimer.cancel的条件。关键是要从其自身的onTick方法外部调用对象cancel方法。

检查以下示例:

CountDownTimer countdowntimer;
CountDownTimer assist;
long millisuntillfinish = 10000;
int interval = 100;
countdowntimer = new CountDownTimer(millisuntillfinish, interval) {
    @Override
    public void onTick(long millisUntilFinished) {
        // if(true) countdowntimer.cancel(); (doesnt work)
    }

    @Override
    public void onFinish() {
    }
};

assist = new CountDownTimer(timertillfinish, timerinterval) {
    @Override
    public void onTick(long millisUntilFinished) {
        if (true) {
            countdowntimer.cancel();
        }
    }

    @Override
    public void onFinish() {
        assist.cancel();
    }
};

关于java - 如何计算DownTimer.cancel();在OnTick();中功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35315272/

10-09 06:15