CountDownTimer暂停并取消

时间:2015-02-17 07:07:19

标签: android eclipse countdowntimer

我的视图类的构造函数中有一个倒数计时器。它似乎成功了。但我不能.cancel()。有人请帮我解读我的编码吗?继承我的代码。

private CountDownTimer countTimer;
public GameView(Context context) {
    super(context);
            new CountDownTimer(20000, 1000) {
            public void onTick(long millisUntilFinished) {
                countDowntimer = String.valueOf(millisUntilFinished / 1000);
                invalidate();
            }
            public void onFinish() {
                timer.setColor(Color.TRANSPARENT);
                if (Game.lifeCount <= 1) {
                    countDowntimer = String.valueOf("TIME'S UP!");
                    if (countmaze == 0) {
                        timesUpDialog1();
                    } else if (countmaze == 1) {
                        timesUpDialog2();
                    } else if (countmaze == 2) {
                        timesUpDialog3();
                    } else if (countmaze == 3)
                        timesUpDialog4();
                } else {
                    showGameoverDialog();
                }
            }
        }.start();

代码告诉玩家,只要时间用完,我的onTouch event

就会失去生命
if (maze.isWrongAnswer()) {
    countTimer.cancel();
    //..some codes here

但是每当我遇到这种情况时, countTimer.cancel()都无法正常工作。为什么?请帮帮我。谢谢。顺便说说。我还希望在倒计时中有一个pause method。有一个简单的方法吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

你忘记将倒数计时器放入你的全局变量中:

private CountDownTimer countTimer;
public GameView(Context context) {
    super(context);
            countTimer = new CountDownTimer(20000, 1000) { //<- in here bro
            public void onTick(long millisUntilFinished) {
                countDowntimer = String.valueOf(millisUntilFinished / 1000);
                invalidate();
            }
            public void onFinish() {
                timer.setColor(Color.TRANSPARENT);
                if (Game.lifeCount <= 1) {
                    countDowntimer = String.valueOf("TIME'S UP!");
                    if (countmaze == 0) {
                        timesUpDialog1();
                    } else if (countmaze == 1) {
                        timesUpDialog2();
                    } else if (countmaze == 2) {
                        timesUpDialog3();
                    } else if (countmaze == 3)
                        timesUpDialog4();
                } else {
                    showGameoverDialog();
                }
            }
        }.start();

暂停时,我使用sharedPreferences来保存计时器。然后在我想要恢复倒计时时加载它。