如何在 android 中检查以毫秒为单位的时间
How to check times in milliseconds in android
我有一个运行良好的毫秒计时器。
按钮代码:
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),但是这个功能(检查)不起作用。
有什么想法吗?
'check'功能有效...但只有五分之一:可能是刷新时间太短了?
另外,代码在一个片段中:它对定时器有什么影响吗?
您是否考虑过使用此处所述的 Android Instant
class?
https://developer.android.com/reference/kotlin/java/time/Instant
当我从事与您相同类型的工作时,它对我帮助很大。
您需要执行此操作才能获得以毫秒为单位的时间:
long time = System.currentTimeMillis();
您的计算时间可能超过 1 毫秒。你不应该经常检查。它很贵而且不安全。
为什么不使用 CountdownTimer?它可以完成工作,并且以毫秒为单位。
private long[] checkTimes = new long[]{ 45367L,90446L,25384L};
for (int i = 0; i < checkTimes.length; i++) {
new CountDownTimer(checkTimes[i], 1000) {
public void onTick(long millisUntilFinished) {
txtCheck.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
txtCheck.setText("done");
}
}.start();
}
我有一个运行良好的毫秒计时器。 按钮代码:
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),但是这个功能(检查)不起作用。 有什么想法吗?
'check'功能有效...但只有五分之一:可能是刷新时间太短了? 另外,代码在一个片段中:它对定时器有什么影响吗?
您是否考虑过使用此处所述的 Android Instant
class?
https://developer.android.com/reference/kotlin/java/time/Instant
当我从事与您相同类型的工作时,它对我帮助很大。
您需要执行此操作才能获得以毫秒为单位的时间:
long time = System.currentTimeMillis();
您的计算时间可能超过 1 毫秒。你不应该经常检查。它很贵而且不安全。 为什么不使用 CountdownTimer?它可以完成工作,并且以毫秒为单位。
private long[] checkTimes = new long[]{ 45367L,90446L,25384L};
for (int i = 0; i < checkTimes.length; i++) {
new CountDownTimer(checkTimes[i], 1000) {
public void onTick(long millisUntilFinished) {
txtCheck.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
txtCheck.setText("done");
}
}.start();
}