您好我正在尝试在On-tick功能中取消倒数计时器,它在棒棒糖中正常工作但在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();
}
答案 0 :(得分:0)
如果您以自己的countdowntimer.cancel
方法调用CountDownTimer
对象的onTick
,那将不起作用!
解决问题的最简单方法是定义另一个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();
}
};
答案 1 :(得分:-1)
我一直在寻找并找到this post,他们使用Android countDownTimer的替代方案调用onTick()中的cancel()方法。
我也有这个问题,我创建了一个countDownTimer的全局变量,我在需要时调用了活动中的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();