好的,我需要在倒计时上创建一个无限循环。我的代码是:
public void countdown() {
if (x != null) {
x.cancel();
}
x = new CountDownTimer(20000, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
showNotification();
}
};
x.start();
}
x只是一个静态倒计时器变量。问题是我尝试了很多方法来使上面的代码工作,我的意思是当倒计时结束时,它显示该通知,它应该重新开始等等......但我找不到办法做到这一点
答案 0 :(得分:11)
希望这会对你有所帮助。
public void countdown(){
if (x != null) {
x.cancel();
}
x = new CountDownTimer(20000, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
showNotification();
x.start();
}
};
}
答案 1 :(得分:5)
是完成后重新启动你的计时器:) 像这样:
x = new CountDownTimer(20000, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
showNotification();
start();// here, when your CountDownTimer has finished , we start it again :)
}
};
x.start();
答案 2 :(得分:3)
记录CountDownTimer(长 millisInFuture,长 countDownInterval)
// A not so infinite but close to infinte interval for each second
CountDownTimer cdt=new CountDownTimer(Long.MAX_VALUE, 1000) { .... }
其中Long.MAX_VALUE = 9223372036854775807毫秒或约2.92亿年(秒或多或少)
它不是无限的,但却非常长。
答案 3 :(得分:3)
每一个电话方法
new CountDownTimer(1000, 1000)
{
public void onTick(long l) {}
public void onFinish()
{
//Code hear
start();
}
}.start();
答案 4 :(得分:2)
为什么不使用普通的定时器?它会在指定的时间间隔内重复,直到您调用cancel(),类似于:
public void countdown() {
if (x != null) {
x.cancel();
}
x = new Timer("timerName");
x.schedule(_timerTask, 0, 20000);
}
private static final TimerTask _timerTask = new TimerTask() {
@Override
public void run() {
showNotification();
}
};
答案 5 :(得分:1)
你可以使用while循环:
while (true) {
// do stuff
}
当它完成了“那些东西”时,它将再次开始,无限!
答案 6 :(得分:1)
让你的计时器正常工作
<countdowntime>.start();
在onfinish
块