Java Android sendMessageAtTime()是如何工作的?

Java Android sendMessageAtTime()是如何工作的?,java,android,time,clock-synchronization,Java,Android,Time,Clock Synchronization,因此,我有一个大的(多达5000个)预定义的时间敏感消息数组,我希望我的程序发送给处理程序。其中一些消息需要相隔40毫秒。我想我可以调用一堆sendMessageAtTime()来对它们进行排队,然后在适当的时候为每一个调用我的处理程序 不幸的是,至少在我的AVD中,它似乎执行了几次处理程序,然后在发送最后一条消息之前什么也不做。处理程序没有跟上吗?(即在下次调用之前无法完成?) sendMessageAtTime()是否等待发送消息,直到处理程序处理完当前消息 如果发送消息的指定时间是过去,会

因此,我有一个大的(多达5000个)预定义的时间敏感消息数组,我希望我的程序发送给处理程序。其中一些消息需要相隔40毫秒。我想我可以调用一堆sendMessageAtTime()来对它们进行排队,然后在适当的时候为每一个调用我的处理程序

不幸的是,至少在我的AVD中,它似乎执行了几次处理程序,然后在发送最后一条消息之前什么也不做。处理程序没有跟上吗?(即在下次调用之前无法完成?)

sendMessageAtTime()是否等待发送消息,直到处理程序处理完当前消息

如果发送消息的指定时间是过去,会发生什么情况?它是完全删除消息还是在发送队列中任何其他“稍后”消息之前发送消息

有什么技巧可以让处理程序“跟上”吗?例如,我可以将请求的时间包含在发送给处理程序的消息中,以便处理程序在确定为时已晚时什么也不做


谢谢。

“所以我有一个大的(多达5000个)预定义的时间敏感消息数组,我希望我的程序发送给处理程序”——出于对
$dedity
的热爱,为什么?“其中一些消息需要相隔40毫秒”——Android不是实时操作系统。“sendMessageAtTime()是否等待发送消息,直到处理程序处理完当前消息?”--是,因为它是单线程的。“有没有什么技术可以让处理程序“跟上”?——除此之外,不要向它发送5000条定时消息。我同意这不是一种非常可扩展的方法!因此,我最后要做的是对消息的发送进行计时,并通过sendMessageAtFrontOfQueue()发送消息,以便处理程序能够“跟上”。我还向处理程序发送了一个固定的“结束时间”,所有消息都应通过该时间进行处理。处理程序根据结束时间检查“实时”,并忽略所有迟到的消息。有更好的方法吗?因为我不知道这5000条信息的用途,所以我不能说是否有更好的方法。这当然是一种重要的代码气味,伊姆霍。既然你问了,那就是一系列的颜色和它们应该显示的时间。例如:0毫秒时为#111111,43毫秒时为#22222,102毫秒时为#333333,等等。颜色需要在给定的时间显示,因此我不想等待以前的颜色。我正在使用sleep(myStartTime+duration-SystemClock.uptimeMillis()来确定何时发送消息以更改颜色。那么为什么不使用
AnimationDrawable
“我正在使用sleep(myStartTime+duration-SystemClock.uptimeMillis()来确定何时发送消息以更改颜色”--这太不准确了,一点也不好笑。你不能用主应用程序线程那样精确地计时。我甚至不确定
AnimationDrawable
会更可靠,但它肯定不会那么难看。除此之外,你要看的是使用游戏开发技术,当然不是
处理程序e> 。