android coroutines delay()有时会延迟超过指定的时间。

问题描述 投票:0回答:1

注意到delay()有时会比指定的时间长。

        launch {
            val start = System.currentTimeMillis()
            delay(15)
            val now = System.currentTimeMillis()
            Log.d("TAG", "delayed: ${now - start}")
            doSomeThing()
        }

日志显示有几次延迟需要27ms,20ms,尽管大多数时间是15ms.这是一个已知的行为吗? 有什么更准确的方法来做同样的事情?

delay kotlin-coroutines
1个回答
1
投票

这不仅仅是众所周知的,而是普遍的行为,与以下情况无关 delay 具体来说。应用代码可以随时被操作系统暂停,有GC暂停,IO中断等。有了 delay 你还受制于调度器的精确实施细节以及它如何精确地安排任务。

的保证。delay恰如 Thread.sleep 或任何其他类似的功能,是它将延迟为 起码 在您指定的时间。

© www.soinside.com 2019 - 2024. All rights reserved.