调用postAtTime时,处理程序会自动跳过其他runnables / messages

时间:2014-09-13 06:29:26

标签: java android multithreading

From(Android Handler类) http://developer.android.com/reference/android/os/Handler.html#postAtTime(java.lang.Runnable,很久), postAtTime方法的描述是“将Runnable r添加到消息队列中,在uptimeMillis给定的特定时间运行。时间基准为uptimeMillis()。”参数uptimeMillis是“使用uptimeMillis()时基运行回调的绝对时间”。我的问题是,如果在postAtTime触发时仍然需要运行runnables / messages,那么这些runnables / messages就会被丢弃(从队列中删除)。我的问题来自于我对队列的经验:你只能访问队列的前面,所以我假设特定的消息/ runnable被移动到队列的前面。它跳过的所有东西会发生什么? API没有解决这个问题

1 个答案:

答案 0 :(得分:1)

将时间参数视为"不早于",而不是确切的时间。

runnable被放入队列并有资格在指定时间运行。它实际上只在队列前面的任何消息完成处理后运行。

有关详细信息,您可以read the source