如何暂停CountDownTimer?

问题描述 投票:1回答:2

我想在特定条件下暂停倒数计时器。但是在我的代码中,一旦它开始,它就永远不会停止,即使mIntheGym是假的。请帮我解决这个问题。提前致谢。

这是我的代码如下。

    TimerTask doAsynchronousTask1 = new TimerTask() {
        @Override
        public void run() {
            handler1.post(new Runnable() {
                public void run() {
                    try {
                        if (mIntheGym) {
                            mtextview.setText("counter starts");
                            mCountDownTimer1 = new CountDownTimer(mTimeLeftInMillis1, 500) {
                                @Override
                                public void onTick(long millisUntilFinished) {
                                    mTimeLeftInMillis1 = millisUntilFinished;
                                    updateCountDownText();
                                }

                                @Override
                                public void onFinish() {
                                }
                            }.start();
                        }
                        else {
                            mtextview.setText("stop counter");
                            if (mCountDownTimer1 != null) {
                                mCountDownTimer1.cancel();
                            }
                        }
                    } catch (Exception e) {
                    }
                }
            });
        }
    };
android timer countdown pause
2个回答
0
投票

你不能暂停一个TimerTask。取消后,您无法再次运行它。

你可以在这里查看更多信息:Cancel a TimerTask

希望能帮助到你!


0
投票

从描述中,您的逻辑代码不正确。如果要暂停/停止CountDownTimer,则需要更改它。

TimerTask doAsynchronousTask1 = new TimerTask() {
    @Override
    public void run() {
        handler1.post(new Runnable() {
            public void run() {
                try {
                    mCountDownTimer1 = new CountDownTimer(mTimeLeftInMillis1, 500) {
                        boolean started = false;

                        @Override
                        public void onTick(long millisUntilFinished) {
                            if (mIntheGym) {
                                if (!started) {
                                    mtextview.setText("counter starts");
                                    started = true;
                                }

                                mTimeLeftInMillis1 = millisUntilFinished;
                                updateCountDownText();
                            } else {
                                mtextview.setText("stop counter");
                                if (mCountDownTimer1 != null) {
                                    mCountDownTimer1.cancel();
                                }
                            }
                        }

                        @Override
                        public void onFinish() {
                        }
                    }.start();
                } catch (Exception e) {
                }
            }
        });
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.