Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 精确1秒间隔的最佳计时器技术是什么?_Java_Android_Timer_Intervals_Chronometer - Fatal编程技术网

Java 精确1秒间隔的最佳计时器技术是什么?

Java 精确1秒间隔的最佳计时器技术是什么?,java,android,timer,intervals,chronometer,Java,Android,Timer,Intervals,Chronometer,我正在为一项专门的户外运动编写一个简单的计时应用程序。 该应用程序每秒执行一系列计算,并显示用户感兴趣的信息。运行时间是计算结果准确性的关键。理想情况下,计算和结果将准确地每秒钟更新一次。我曾尝试使用计时器或计时器小部件来控制更新间隔: 有没有更准确的方法来确定时间间隔? 有没有一种技术能给我一个几乎精确的1秒间隔 下面的代码并不完整——只是为了显示我使用的时间和计时器的类型——它们运行良好,只是不够精确 import java.util.Timer ; import java.util.Tim

我正在为一项专门的户外运动编写一个简单的计时应用程序。 该应用程序每秒执行一系列计算,并显示用户感兴趣的信息。运行时间是计算结果准确性的关键。理想情况下,计算和结果将准确地每秒钟更新一次。我曾尝试使用计时器或计时器小部件来控制更新间隔:

有没有更准确的方法来确定时间间隔? 有没有一种技术能给我一个几乎精确的1秒间隔

下面的代码并不完整——只是为了显示我使用的时间和计时器的类型——它们运行良好,只是不够精确

import java.util.Timer ;
import java.util.TimerTask;
...
myTimer = new Timer();
myTimer.schedule(new TimerTask() {
public void run() {
...
TimerMethod();
}
}, 0, 1000);
... 
private void TimerMethod()
{
this.runOnUiThread(Timer_Tick);
}
...
private Runnable Timer_Tick = new Runnable() {
public void run() {
blah blah
}
///////////////////////////////

import android.widget.Chronometer;
...
final Chronometer myChronometer = (Chronometer)findViewById(R.id.chronometer);
final TextView keyBox = (TextView)findViewById(R.id.keyBox);
...      
myChronometer.start();
...   
myChronometer.setOnChronometerTickListener(
new Chronometer.OnChronometerTickListener(){
...
public void onChronometerTick(Chronometer myChronometer) {
blah blah             
}
您看过java.util.Timer类的方法了吗

据javadoc说,,
“在固定速率执行中,每个执行都是相对于初始执行的计划执行时间来安排的。如果执行因任何原因(如垃圾收集或其他后台活动)而延迟,则两个或多个执行将快速连续发生以“赶上”。“从长远来看,执行频率将恰好是指定时间段的倒数(假设对象.wait(long)的系统时钟是准确的)。”

我非常确定
system.nanoTime()
提供了非常精确的时间测量,您可以使用while循环和暂停等待,直到刚好一秒钟过去。谢谢-回答得很好-解决了我的问题。scheduleAtFixedRate是正确的方法。我已经阅读了android文档,但它没有您所指的java文档那么清晰。Thanks@jday谢谢,德国劳埃德船级社你觉得它很有用!我看你是新来的-如果答案符合你的需要,那么“接受”它是惯例。一切都好。