8

我正在使用 android 小部件并检查两次 System.nanoTime() 调用之间的经过时间,而且这个数字很大。你如何用这个来衡量经过的时间?它应该是一秒钟的一小部分,而不是更多。谢谢

4

3 回答 3

20

返回一个时间值,其System.nanoTime()粒度为纳秒;即 10 -9秒,如javadoc中所述。两次调用之间的差异System.nanoTime()是相隔一秒的相当大的一部分,这必然是一个很大的数字。


如果您想要一个更大粒度的时间度量,请考虑System.currentTimeMillis()......或者只是将纳秒值除以 10 的适当幂以适合您的应用程序。

请注意,在 Android 平台上,有 3 个不同的系统时钟支持不同的“时间度量”;见SystemClock。如果您正在为 Android 平台进行显式编程,您应该阅读 javadoc 并决定哪种方法最适合您正在做的事情。


供您参考,“nano-”是国际单位制 (SI) 定义的标准前缀之一 - 请参阅http://physics.nist.gov/cuu/Units/prefixes.html

如果您真的认为“他们”弄错了并且“nano-”太小,您可以随时给 NIST 写一封信。我相信有人会感激它...... :-)

于 2011-02-17T00:17:07.783 回答
9

一秒钟包含1,000,000,000纳秒,所以只要你的数字在那个范围内,它就是合理的。

于 2011-02-16T23:57:54.773 回答
1

如果您想要分数形式,只需将value/ 10^9取到 svalue中的差值在哪里nanoTime()

long nanoSeconds = 500000000;
float seconds = nanoSeconds / 1000000000;

Log.i("NanoTime", nanoSeconds + " ns is the same as " + seconds + " seconds");

您的输出将是:

07-27 11:35:47.196: INFO/NanoTime(14237): 500000000 ns is the same as 0.5 seconds
于 2011-07-27T16:38:48.267 回答