有没有办法连续循环通过倒计时计时器?我有一个基本的计时器,经过60秒,然后更新一个文本字段,它可以工作,但我想添加功能:当它倒计时,自动重新启动,直到用户取消它?也许可以通过线程运行它?不知道该怎么处理。这是我所拥有的,再一次,这段代码可以工作,但我只能停止和启动倒计时计时器,而不是进行连续循环:
cdt = new CountDownTimer(60000,1000) {
public void onTick(long millisUntilFinished) {
tvTimer.setText("remaining : " + millisUntilFinished/1000 + " secs");
}
public void onFinish() {
tvTimer.setText("");
bell.start();
}
};
/***************On Click/Touch Listeners*******************/
btnNext.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
tvTimer.setText("");
btnStart.setText("Start Timer");
SetImageView2(myDbHelper);
cdt.cancel();
}
});
btnStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!TimerTicking){
cdt.start();
btnStart.setText("Stop Timer");
}
else {
tvTimer.setText("");
cdt.cancel();
btnStart.setText("Start Timer");
}
}
});
发布于 2012-11-17 02:42:26
循环CountDownTimer的一种非常基本的方法是在onFinished()
中调用start()
。
public void onFinish() {
...
start(); // Start this timer over
}
(请确保在执行此操作时在onPause()
中取消了CountDownTimer,否则计时器可能会泄漏并在后台继续触发……(哦。)
然而,CountDownTimers有根本的缺陷(在我看来):它经常跳过对onTick()
的最后一次调用,并且每次调用onTick()
时都会获得几毫秒的时间……:(我在previous question中重写了CountDownTimer,以使其更准确,并调用每一个滴答。
发布于 2014-03-20 06:53:51
CountDownTimer()构造函数的第一个值是运行总时间,它是一个很长的值,可以保存一个接近3亿年的值。对于大多数移动应用程序来说,这应该足够长了。:-)
因此,只要用cdt = new CountDownTimer(Long.MAX_VALUE, 1000)
调用它,就会有一个持续运行的一秒循环。
https://stackoverflow.com/questions/13427134
复制相似问题