如何在安卓中停止倒计时器

29

如何停止这个计时器?有什么想法吗?

我想在每次查询中重置计时器,但它继续运行。每个新查询都会添加新的计时器。如何解决这个问题?

 new CountDownTimer(zaman, 1000) {                     //geriye sayma

            public void onTick(long millisUntilFinished) {

                NumberFormat f = new DecimalFormat("00");
                long hour = (millisUntilFinished / 3600000) % 24;
                long min = (millisUntilFinished / 60000) % 60;
                long sec = (millisUntilFinished / 1000) % 60;

                cMeter.setText(f.format(hour) + ":" + f.format(min) + ":" + f.format(sec));
            }

            public void onFinish() {
                cMeter.setText("00:00:00");
            }
        }.start();
4个回答

93
你可以将其分配给一个变量,然后在变量上调用cancel()
CountDownTimer yourCountDownTimer = new CountDownTimer(zaman, 1000) {                    
    public void onTick(long millisUntilFinished) {}

    public void onFinish() {}

    }.start();

yourCountDownTimer.cancel();

或者你可以在计数器范围内调用cancel()

new CountDownTimer(zaman, 1000) {                    
    public void onTick(long millisUntilFinished) {
        cancel();
    }

    public void onFinish() {}

    }.start();

阅读更多:https://developer.android.com/reference/android/os/CountDownTimer.html


非常感谢,你的CountDownTimer.cancel();已经生效。 - Taha
2
你的倒计时器.stop()?它应该是.cancel()吗? - Ken Ratanachai S.
是的,你说得对。我是在没有访问Android Studio时编写的:D @KenRatanachaiS。 - Amir_P

10

你可以在回调方法中使用this.cancel()或者简单地使用cancel()来取消操作。


2

静态的CountDownTimer计时器变量countDownTimer为null。

    if (countDownTimer != null) {
        countDownTimer.cancel();
    }
    countDownTimer = new CountDownTimer(50000, 1000) {
        public void onTick(long millisUntilFinished) {
            Log.e("seconds remaining : ", "seconds remaining : " + millisUntilFinished / 1000);
        }

        public void onFinish() {
            Log.e("done!", "done!");
        }
    };
    countDownTimer.start();

0
在 Kotlin 中,您可以使用此命令。
countDownTimer?.cancel()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接