主线程循环器如何处理UI事件消息



UI事件是否作为标准消息发布到主线程消息队列的末尾?他们张贴到队列的前面使用sendMessageAtFrontOfQueue?还是以其他方式张贴?

如果这个问题重复了,请原谅。

它们将被发布到最后,否则可能会出现消息从未处理的饥饿情况

非延迟消息(使用post(Runnable r)发布的消息)和延迟消息(使用postDelayed(Runnable r, long delayMillis)发布的消息)都被附加到队列的末尾。但是,您必须理解,即使是非延迟消息也具有隐含的零延迟。换句话说,队列中的每个消息都有一个与之关联的"传递时间"。这个"传递时间"决定了从队列中挑选消息的顺序。因此,例如,如果您的队列当前有一个显式延迟为3000ms的消息,并且您将另一个没有显式延迟的消息加入队列,那么这个新添加的消息将跳过第一个消息首先执行。就sendMessageAtFrontOfQueue而言,您可以根据您的需求以谨慎的方式专门使用它,否则它很容易使消息队列饿死,导致排序问题,或产生其他意想不到的副作用。

相关内容

  • 没有找到相关文章

最新更新