【问题标题】:How to countDownTimer.cancel(); in OnTick(); function如何 countDownTimer.cancel();在 OnTick() 中;功能
【发布时间】:2016-02-10 12:25:53
【问题描述】:

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

    }

【问题讨论】:

  • 请提供一些代码给我们一些可以使用的东西..
  • 请检查我的更新代码

标签: java android countdowntimer


【解决方案1】:

如果你在自己的onTick 方法中调用CountDownTimer 对象的countdowntimer.cancel,它将无法工作!

解决问题的最简单方法是定义另一个CountDownTimer,与主要的相同,以检查调用countdowntimer.cancel 的条件。关键是您正在从它自己的onTick 方法之外调用对象取消方法。

查看以下示例:

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();
    }
};

【讨论】:

    【解决方案2】:

    我一直在环顾四周,发现this post 使用Android countDownTimer 的替代方法调用onTick() 中的cancel() 方法。

    我也遇到了这个问题,我创建了一个countDownTimer的全局变量,并在需要时调用了activity中的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();
    

    【讨论】:

    • 可以,但我不知道调用取消方法所需的条件。如果你解释我会做的。但是我认为你必须在方法 createTimer() 之外调用 mCountDownTimer.cancel()。
    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    相关资源
    最近更新 更多