【问题标题】:What is the time granularity in Android?Android中的时间粒度是多少?
【发布时间】:2019-01-21 10:47:45
【问题描述】:

我知道 Windows 的时钟时间粒度为几十毫秒。

  • Android 操作系统使用什么时间粒度?
  • System.currentTimeMillis()System.nanoTime() 提供了哪些粒度?
  • Android 中的这些方法是否使用相同的硬件时间源?

【问题讨论】:

  • 对于当前时间毫秒,尝试使用 Thread.sleep(1) 编写一个简单的测试,然后将值写入控制台。对于 nanoTime(),您可以编写一个紧密循环并在每次更改时输出值。当值变化 10 次时停止。

标签: java android time clock


【解决方案1】:

如果我理解你所说的粒度是什么意思:

对于第一/第三点: 这取决于 2 个因素,硬件(如 CPU 时钟、总线等)和系统工作负载(可能导致延迟),因此您可以:

  • 通过检查 2 个输出之间的时间差来计算粒度
  • 检查您使用的 android 版本是否提供了确定粒度的方法,但通常取决于低于 VM 级别的某些驱动程序

关于第二点:

  • "System.currentTimeMillis()" 返回自 1970 年 1 月 1 日 UTC 以来的时间(以毫秒为单位)。
  • “System.nanoTime()”返回正在运行的 Java 虚拟机的高分辨率时间源的当前值,以纳秒为单位。

(信息来源Android documentation

但它们依赖于 Android 系统使用的 VM。

【讨论】:

    猜你喜欢
    • 2022-11-09
    • 2020-12-23
    • 2011-05-26
    • 1970-01-01
    • 2012-12-28
    • 2019-12-07
    • 2018-11-24
    • 2014-05-27
    • 1970-01-01
    相关资源
    最近更新 更多