Android秒表-时间增长非常快
我正在为android做一个秒表应用程序。我有一个启动和停止按钮。我的问题是时间增长得很快。我错在哪里了。下面是代码:Android秒表-时间增长非常快,android,stopwatch,Android,Stopwatch,我正在为android做一个秒表应用程序。我有一个启动和停止按钮。我的问题是时间增长得很快。我错在哪里了。下面是代码: final Runnable updater = new Runnable() { public void run() { if (startIsPressed) { time = SystemClock.elapsedRealtime() - initStart + startPoin
final Runnable updater = new Runnable() {
public void run() {
if (startIsPressed) {
time = SystemClock.elapsedRealtime() - initStart + startPointTime;
startPointTime = time;
} else {
time = startPointTime;
}
hh = time / 3600000;
hours.setText("" + formatter.format(hh));
time = time - hh * 3600000;
mm = time / 60000;
minutes.setText("" + formatter.format(mm));
time = time - mm * 60000;
ss = time / 1000;
seconds.setText("" + formatter.format(ss));
time = time - ss * 1000;
millis.setText("" + formatter.format(time / 10));
handler.postDelayed(this, 30);
}
};
startBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (!startIsPressed) {
startIsPressed = true;
startBtn.setText(R.string.stop);
initStart = SystemClock.elapsedRealtime();
handler.post(updater);
} else {
startIsPressed = false;
startBtn.setText(R.string.start);
handler.post(updater);
}
}
});
}
正如doc所说,会将可运行的r添加到消息队列中,并在指定的时间后运行。每1秒更新一次计时器,如下所示:
使用
而不是
handler.postDelayed(this, 30); //30 milliseconds refresh rate
看秒表逻辑看这篇文章也许会有帮助,谢谢你的重播,但我的问题仍然是如何开始计算停止的时间。链接中显示的示例仅停止计时器并重新开始。
handler.postDelayed(this, 30); //30 milliseconds refresh rate