【问题标题】:What does the delayMillis parameter actually stand for in Handler.postDelayed() method?Handler.postDelayed() 方法中的 delayMillis 参数实际上代表什么?
【发布时间】:2014-10-23 21:24:28
【问题描述】:

Handler.postDelayed(Runnable r, long delayMillis) 的文档说 -

使 Runnable r 被添加到消息队列中,以便运行 经过指定的时间后。

r 将被执行的 Runnable。 delayMillis 执行 Runnable 之前的延迟(以毫秒为单位)。

注意:最后一个词是已执行已添加到消息队列。 Runnable 立即添加到消息队列的末尾。这意味着,执行此 Runnable 的延迟将等于执行消息队列中此 Runnable 前面的消息/runnable 所花费的时间。如何保证两个时间相等?我错过了什么吗?

例如,假设 MessageQueue 当前包含 A、B、C,分别需要 1、1.6、2 秒,handler.postDelayed(R, 4000) 现在将 R 附加到 MessageQueue 的末尾。 A,B,C 将在 4.6 秒内完成,但 R 计划在 4 秒后运行。这怎么可能?如果延迟超过 4.6 秒怎么办?

URL - Android Reference page for Handler postDelayed

【问题讨论】:

  • 基本上它会在至少delayMillis毫秒后运行。

标签: android android-handler


【解决方案1】:

这不是确切的延迟。将延迟视为“不早于”。在延迟之后,runnable 有资格执行,但它仅在消息队列已处理任何先前的消息时运行。

道德:确保在处理消息/可运行文件时不会长时间阻塞线程。

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    相关资源
    最近更新 更多