我的视图类的构造函数中有一个倒数计时器。它似乎成功了。但我不能.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
。有一个简单的方法吗?非常感谢!
答案 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来保存计时器。然后在我想要恢复倒计时时加载它。