我有一个处理程序,可以从计时器定期更新UI。
有时,更新可能需要比计时器间隔更长的时间。在这种情况下会发生什么? Android是否监视handlemessage以确保其完成工作,还是我自己完成?可能是一个愚蠢的问题,但经过长时间的搜寻后没有找到任何引用。

编辑:

我问是因为我有ConcurrentLinkedQueue,并且从其中的元素在handlemessage调用的方法中被删除了。这是唯一删除它们的地方,但是有时我可以看到删除了2个元素,而不是一个。像handlemessage被重新输入。
如果根据@Gabe不可能,那么还有什么其他解释?

最佳答案

发送给处理程序的所有消息都在同一线程上发生。因此,除非您直接调用handler.handleMessage,否则不可能有重入实例。处理程序是事件循环的一部分-事件被发送到Looper对象,并且当线程完成每个事件时,它会从Looper获取下一个事件(在这种情况下,该事件是处理程序消息)并按FIFO顺序进行处理。

10-06 05:57