我开发了一个应用,该应用具有3个用于秒表的计时器。当第三个停止时,将给出一个total
,它看起来非常简单和基本。
我正在测试3个测试设备,以确保该应用在投入生产之前的行为符合预期。
示例:
timeSetup = 00:00:05;
timeProcessing = 00:00:10;
timeReconciliation = 00:00:05;
total = 00:00:20;
这就是我希望它在我的个人设备(即Samsung Galaxy s7,API 26)上正常运行的方式。
但是,在其他设备(例如API 25和API 22)上,结果是随机产生的,例如上述示例中的00:00:47
和00:00:45
。
代码:
Long total = timeSetup + timeProcessing + timeReconciliation;
int h = (int) (total / 3600000);
int m = (int) (total - h * 3600000) / 60000;
int s = (int) (total - h * 3600000 - m * 60000) / 1000;
totaltime = (h < 10 ? "0" + h : h) + ":" + (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s);
上面的代码是我计算total
的方式。
是否存在将三个long值相加的更准确或一致的方法,或者设备之间不一致的原因是什么?
如何使用天文钟计算时间的示例代码:
chronometerReconciliation.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometerChanged) {
chronometerReconciliation = chronometerChanged;
timeReconciliation = SystemClock.elapsedRealtime() - chronometerReconciliation.getBase();
int h = (int) (timeReconciliation / 3600000);
int m = (int) (timeReconciliation - h * 3600000) / 60000;
int s = (int) (timeReconciliation - h * 3600000 - m * 60000) / 1000;
timeShownReconciliation = (h < 10 ? "0" + h : h) + ":" + (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s);
chronometerReconciliation.setText(timeShownReconciliation);
任何帮助都会很棒!