CountDownTimer取消()不工作

时间:2015-01-01 10:53:03

标签: java android countdowntimer

我是Android开发新手,并尝试制作小游戏。 CountDownTimer.cancel()对我不起作用。

任何想法?

感谢您的回答!

CountDownTimer cdt = new CountDownTimer(120000, 1000) {

            public void onTick(long millisUntilFinished) {
                maxTime = (int) (millisUntilFinished / 1000);
                timer.setText(String.valueOf(maxTime));
            }

            public void onFinish() {

            }
        };

        if (startTimer == true) {
            cdt.start();
        } else {
            cdt.cancel();
        }

2 个答案:

答案 0 :(得分:7)

我必须在这里做一个假设,因为代码没有显示太多!显然你使用countDownTimer内的onCreate作为内部类,这样在startTimer == true时会触发计时器,无论如何都会创建对象!我想最好创建一个CountDownTimer的全局实例。

以这种方式编写代码:

if(startTimer == true) {
    cdt = new CountDownTimer(120000, 1000) {
        public void onTick(long millisUntilFinished) {
            maxTime = (int) (millisUntilFinished / 1000);
            timer.setText(String.valueOf(maxTime));
        }

        public void onFinish() {

        }
    }.start(); //start the countdowntimer
}
else{
    cdt.cancel();
}

答案 1 :(得分:0)

        Boolean Myboolean = true;
        CountDownTimer MyCountDownTimer = new CountDownTimer(10000, 1000)
        {
            @Override
            public void onFinish()
            {
            }

            @Override
            public void onTick(long millisUntilFinished)
            {
                Log.i("onTick" , String.valueOf((millisUntilFinished / 1000) % 60));
                if(!Myboolean ) { cancel(); }
            }

        }.start();

我遇到了这个问题,CountDownTimer 不会用 (MyCountDownTimer.cancel();) 取消,最好的方法是使用 Boolean ,将 Boolean 设置为 false 以取消 CountDownTimer。在任何你想要的地方 (Myboolean =false;)