注意到delay()有时会比指定的时间长。
launch {
val start = System.currentTimeMillis()
delay(15)
val now = System.currentTimeMillis()
Log.d("TAG", "delayed: ${now - start}")
doSomeThing()
}
日志显示有几次延迟需要27ms,20ms,尽管大多数时间是15ms.这是一个已知的行为吗? 有什么更准确的方法来做同样的事情?
这不仅仅是众所周知的,而是普遍的行为,与以下情况无关 delay
具体来说。应用代码可以随时被操作系统暂停,有GC暂停,IO中断等。有了 delay
你还受制于调度器的精确实施细节以及它如何精确地安排任务。
的保证。delay
恰如 Thread.sleep
或任何其他类似的功能,是它将延迟为 起码 在您指定的时间。