【发布时间】:2020-03-30 19:33:47
【问题描述】:
我有一个工作正常的毫秒计时器。 按钮代码:
btnStart.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
startTime = SystemClock.uptimeMillis();
customHandler.postDelayed(updateTimerThread,0);
txtCheck.setText("");
}
});
可运行:
Runnable updateTimerThread = new Runnable() {
@Override
public void run() {
timeMilliSeconds = SystemClock.uptimeMillis()-startTime;
updateTime = timeSwapBuff+timeMilliSeconds;
secs = (int)(updateTime/1000);
mins = (int)(secs/60);
secs %=60;
milliseconds = (int)(updateTime%1000);
txtChrono.setText(""+mins+":"+String.format("%2d",secs)+":"
+String.format("%3d",milliseconds));
customHandler.postDelayed(this,0);
check(secs, milliseconds)
}
};
检查时间是否匹配的功能:
public void check(Integer secs, long milli){
if (secs.equals(45) && milli.equals(367)){
txtCheck.setText("done");
}
}
我需要检查时间才能开始活动。我必须检查的时间是 seconds.milliseconds(即 45.367),但是这个功能(检查)不起作用。 有什么想法吗?
“检查”功能有效……但只有五分之一:刷新时间可能太短? 另外,代码在一个片段中:它对定时器有影响吗?
【问题讨论】:
-
它不起作用是什么意思?预期的结果是什么,你得到了什么?为什么要使用延迟为 0 的 .postDelayed 方法?此外,您可能应该更好地格式化您的代码以提高可读性。
-
原始数据类型没有等式方法。您应该使用“==”或用
Long.parseLong();包装它并且Runnable 不是线程,它是可以由线程执行的任务。 -
@nulldroid。我已经更改了代码以使其更清晰(?)。我不知道为什么我使用 .postDelayed 延迟为 0(我从教程中复制了代码)并且计时器工作正常。
-
@LinuxServer。与您的建议结果相同。
-
你可以尝试 kotlin 的“compareTo”。这可能会解决问题。
标签: java android milliseconds chronometer