我使用以下代码:
public class CountDown extends CountDownTimer {
public CountDown(long millisInFuture) {
super(millisInFuture, 1000);
}
public void onFinish() {
}
public void onTick(long millisUntilFinished) {
Integer milisec = new Integer(new Double(millisUntilFinished)
.intValue());
Integer cd_secs = milisec / 1000;
Integer hours = cd_secs / 3600;
Integer minutes = (cd_secs % 3600) / 60;
Integer seconds = (cd_secs % 3600) % 60;
timerText.setText(String.format("%02d", hours) + ":"
+ String.format("%02d", minutes) + ":"
+ String.format("%02d", seconds));
long timeLeft = millisUntilFinished / 1000;
}
}
我在同一个屏幕上显示多个计时器。
我面临的问题是,当计时器完成其持续时间时,计时器显示为“00:00:01”
由于多个定时器(考虑3个定时器)以不同的持续时间运行,我无法在onFinish()上进行硬编码,因为在硬编码时我收到错误,因为其他定时器在其中一个定时器完成时仍在运行
public void onFinish() {
secText.setText("00");
}
请提供您的意见。
源代码是否有任何问题,为什么它不会改为“00:00:00”&定时器完成后停止到“00:00:01”?
提前致谢。
温暖的问候,
CB
答案 0 :(得分:0)
为什么使用Integer和Double?这些是自动装箱的值,因此速度较慢。另外你为什么要使用
Integer milisec = new Integer(new Double(millisUntilFinished).intValue());
何时
int milisec = (int) millisUntilFinished;
应该做同样的事情。还
int cd_secs = milisec / 1000;
int hours = cd_secs / 3600;
int minutes = (cd_secs % 3600) / 60;
int seconds = (cd_secs % 3600) % 60;
应该做同样的事情
修改
问题很可能是你在调用父构造函数时设置的间隔太高。尝试super(millisInFuture, 100)
应该更可靠地工作。