vlk*_*kpo 1 time android stopwatch
我需要秒表,我使用了http://www.goldb.org/stopwatchjava.html
它效果不佳,所以我尝试每 1000 毫秒写出一次值:
stopWatch.start();
HandlerScrollBar.postDelayed(TtScroll, 1000);
private Runnable TtScroll = new Runnable() {
public void run() {
long time = stopWatch.getElapsedTime();
HandlerScrollBar.postDelayed(TtScroll,(long) 1000);
Log.d(TAG, Long.toString(time));
}
};
Run Code Online (Sandbox Code Playgroud)
我可以在 CatLog 中看到每秒的时间值,这是结果:

实时时间最长为 +5ms,但在列中至少为 +3 秒!这怎么可能?它与
new Date().getTime().
Run Code Online (Sandbox Code Playgroud)
是否有一些 StopWatch 类可以按预期通过此测试?
谢谢你。
如果您正在测量经过的时间,并且希望它是正确的,则必须使用System.nanoTime(). 你不能使用System.currentTimeMillis(),除非你不介意你的结果是错误的。
nanoTime的目的是测量经过的时间,而 currentTimeMillis 的目的是测量挂钟时间。您不能将其用于其他目的。原因是没有计算机的时钟是完美的;它总是漂移,偶尔需要纠正。
由于 nanoTime 的目的是测量经过的时间,因此它不受任何这些小修正的影响。我建议选择 nanoTime(),因为它在这些微计算中具有更好的准确性。
用于极其精确地测量经过的时间。从它的javadoc:
long startTime = System.nanoTime();
Run Code Online (Sandbox Code Playgroud)
// ... 被测量的代码 ...
long estimatedTime = System.nanoTime() - startTime;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |