CountDownTimer 暂停并取消
CountDownTimer paused and cancel
我的视图构造函数中有一个倒数计时器 class。它似乎解决了。但我做不到 .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
。有没有一种简单的方法可以做到这一点?非常感谢!
您忘记将倒数计时器放入您的全局变量中:
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 来保存滴答计数器。然后在我想恢复倒计时时加载它。
我的视图构造函数中有一个倒数计时器 class。它似乎解决了。但我做不到 .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
。有没有一种简单的方法可以做到这一点?非常感谢!
您忘记将倒数计时器放入您的全局变量中:
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 来保存滴答计数器。然后在我想恢复倒计时时加载它。