postDelayed(Runnable runnable,Long delayMilliSeconds)的方法是如何工作的?

时间:2015-08-05 23:00:09

标签: android runnable android-handler postdelayed

我想知道何时执行postDelayed(...)方法,并且有许多消息在消息队列中等待。在那种情况下,什么时候运行runnable?是否会在方法中定义的时间过后?或者它会等到它的角色进入消息队列?或者是什么... ?

1 个答案:

答案 0 :(得分:2)

让我们检查源代码和文档:

  

使Runnable r添加到要运行的消息队列中   经过指定的时间后。 runnable将运行   在此处理程序附加到的线程上。时间基础是   uptimeMillis()。深度睡眠所花费的时间会增加额外的延迟   执行。

if

现在让我们检查public final boolean postDelayed(Runnable r, long delayMillis) { return sendMessageDelayed(getPostMessage(r), delayMillis); }

  

在所有待处理消息之后将消息排入消息队列   之前(当前时间+ delayMillis)。

sendMessageDelayed

因此,postDelayed将您的任务添加到所有待处理消息之后但在正常运行时间+您放置的延迟之前执行。

查看此问题以获得更多解释: Does postDelayed cause the message to jump to the front of the queue?

希望它有所帮助。