嗨,我正在尝试取消一个倒计时计时器在计时功能中,它在棒棒糖中工作得很好,但在Kitkat和更低版本中不起作用。如何从OnTick()函数中取消它。
private void startTimer(final int minuti) {
countDownTimer = new CountDownTimer(60 * minuti * 1000 + sec * 1000,
500) {
@Override
public void onTick(long leftTimeInMilliseconds) {
CountDownTimer.cancel();
}
@Override
public void onFinish() {
}
}.start();
}
发布于 2018-08-27 07:33:30
不知何故,如果您在CountDownTimer
对象自己的onTick
方法中调用它的countdowntimer.cancel
,它将无法工作!
解决问题的最简单方法是定义另一个与main相同的CountDownTimer
,以便检查调用countdowntimer.cancel
的条件。关键是您要从对象自己的onTick
方法外部调用对象的cancel方法。
查看下面的示例:
CountDownTimer countdowntimer;
CountDownTimer assist;
long millisuntillfinish = 10000;
int interval = 100;
countdowntimer = new CountDownTimer(millisuntillfinish, interval) {
@Override
public void onTick(long millisUntilFinished) {
// if(true) countdowntimer.cancel(); (doesnt work)
}
@Override
public void onFinish() {
}
};
assist = new CountDownTimer(timertillfinish, timerinterval) {
@Override
public void onTick(long millisUntilFinished) {
if (true) {
countdowntimer.cancel();
}
}
@Override
public void onFinish() {
assist.cancel();
}
};
发布于 2016-02-10 13:00:05
我一直在四处寻找,我发现了this post,他们在onTick()中使用了一个替代安卓countDownTimer的方法来调用cancel()方法。
我也有这个问题,我创建了一个countDownTimer的全局变量,并在需要的时候调用了activity中的cancel方法,比如myCountDownTimer.cancel()
。
private CountDownTimer mCountDownTimer;
private CountDownTimer createTimer(){
return new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
//do what you want
}
public void onFinish() {
//do what you want
}
}.start();
}
在您的活动调用中:
mCountDownTimer = this.createTimer();
如果你想取消它:
mCountDownTimer.cancel();
https://stackoverflow.com/questions/35315272
复制