在Handler.postDelayed()方法中,delayMillis参数实际上代表什么?

时间:2014-08-29 20:08:29

标签: android android-handler

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

  

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

     

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

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

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

URL - Android Reference page for Handler postDelayed

1 个答案:

答案 0 :(得分:2)

这不是一个确切的延迟。将延迟视为"不早于"。延迟之后,runnable有资格执行,但只有在消息队列处理完任何先前消息时才会运行。

道德:确保你处理你的消息/ runnables而不会在很长一段时间内阻塞线程。