如何countDownTimer.cancel();在OnTick();函数

时间:2016-02-10 12:25:53

标签: java android countdowntimer

您好我正在尝试在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();

    }

2 个答案:

答案 0 :(得分:0)

如果您以自己的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();
    }
};

答案 1 :(得分:-1)

我一直在寻找并找到this post,他们使用Android countDownTimer的替代方案调用onTick()中的cancel()方法。

我也有这个问题,我创建了一个countDownTimer的全局变量,我在需要时调用了活动中的cancel方法,比如myCountDownTimer.cancel()

private CountDownTimer mCountDownTimer;


private CountDownTimer createTimer(){
   return new CountDownTimer(30000, 1000) {

    public void onTick(long millisUntilFinished) {

       //do what you want
    }

    public void onFinish() {
       //do what you want
    }

    }.start();
}

在您的活动电话中:

mCountDownTimer = this.createTimer();

如果你想取消它:

mCountDownTimer.cancel();