我想知道何时执行postDelayed(...)方法,并且有许多消息在消息队列中等待。在那种情况下,什么时候运行runnable?是否会在方法中定义的时间过后?或者它会等到它的角色进入消息队列?或者是什么... ?
答案 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?
希望它有所帮助。