是否按顺序收到Android广播?

Joh*_*n W 10 android

如果2个广播,A和B,并按顺序发送,Android是否保证所有感兴趣的接收者将以相同的顺序接收它们?

Dev*_*red 9

我相信你问是否有任何方法可以保证每个感兴趣的接收者在获得广播B之前都会收到各自的广播A.我能给出的最佳答案是很有可能,因为所有的广播都传递给ActivityManager应该处理的广播他们反过来.但是我不相信框架中有任何"保证"这种行为的东西(我在ActivityManager上找不到它们全部发布的队列或类似的东西).此外,一次BroadcastReceiver只能处理一个Intent,这会有所帮助.

相反,如果您的意思是"我可以控制发送每个广播的接收者的顺序",那么您的答案就在于sendOrderedBroadcast()其他人已经避开的答案.


bey*_*iii 5

可以在此处找到有关此问题的更多信息:

广播接收器执行。
https://groups.google.com/forum/#!topic/android-developers/ClIGNuGJUts


在上面的链接中,Dianne Hackborn 写道......

“一个特定的接收器一次只能处理一个广播。当每个广播发生时,它会被处理以确定它应该去的目标,并被分派到每个目标的消息队列中。当稍后的广播被发送时,它通常会不会被移到队列前面。

对于屏幕开/关广播,您可以依赖最新的广播作为屏幕的当前状态。一旦一切安定下来。您不能依赖任何其他广播或其他可能也在接收广播的广播接收器的排序。”


本文建议可能使用 sendBroadcastSync() 进行同步传递,但不能保证。

LocalBroadcastManager 是否按照事件发送的顺序传递事件?