如果2广播,A和B,在顺序发送,并安卓保证所有感兴趣的接收器将接收他们以相同的顺序?Android广播是否按顺序收到?
回答
我相信你是问,如果有任何的方式来保证每个感兴趣的接收器将获得广播B.最好的答案我可以给的是,它极有可能之前接收其相应的广播A,因为所有的广播传递给应该依次处理它们的ActivityManager
。但我不相信框架中有什么能够“保证”这种行为(我无法在ActivityManager上找到所有发布的队列或类似的东西)。此外,BroadcastReceiver
一次只能处理一个意图,这有所帮助。
如果您的意思是“我可以控制发送每个广播的接收器的顺序”,那么您的答案就是sendOrderedBroadcast()
,正如其他人所避免的。
您可能需要使用sendOrderedBroadcast(如果您有这个控制),以保证秩序。
虽然我能看到的混乱,不幸的是,这不是因为'sendOrderedBroadcast'provides确保给定的单个广播的装置的由接收机中消耗的一个解决方案优先顺序。不幸的是,与保持多个独立广播的接收顺序无关,这就是问题所在。 – Trevor
您可能对广播所作的行为检查,如果不存在,直到发生了不使用B钮?所以他们可能会被收回,但仍然正确行事?
如何检查广播的行为?这是由接收器完成的吗?谢谢。 –
这种思想的变型可能是该广播发送机插入它发送每个广播的'Intent'内的递增的序列号。通过这种方式,接收机可以检测连续广播是否以不同的顺序收到,并采取适当的行动。这可能是一个很好的使用安全带和安全措施,直到有人证明Android系统保证顺序(这会更好)。 – Trevor
关于这个问题,一些更多的信息可以在这里找到:
广播接收机执行。
https://groups.google.com/forum/#!topic/android-developers/ClIGNuGJUts
在上述链路戴安Hackborn写入...
“特定的接收机只能一次处理一个广播,作为每个广播情况发生时,它被处理以确定目标应该到达,并发送到每个目标的消息队列中,当发送稍后的广播时,通常不会在队列之前移动。最重要的ent广播你成为屏幕的当前状态。一旦一切都安定下来。你可以不依赖于任何其他的广播,或者也可以接收广播等广播接收机订货。”
本文建议可能使用sendBroadcastSync()进行同步交付使用,但不能保证。
Does LocalBroadcastManager deliver events in the order in which the events wer sent?
这应该是upvoted和接受的答案,因为它有正式的参考。 – Blaisorblade
- 1. Android:确定是否收到广播
- 2. 广播没有收到Android
- 3. 收到广播
- 4. Android系统是否收到我们的应用程序发送的广播?
- 5. 未收到广播
- 6. Android:广播ACTION_MY_PACKAGE_REPLACED从未收到
- 7. Android广播接收器
- 8. Android MMS广播接收器
- 9. Android广播接收器
- 10. Android。广播接收器
- 11. 广播接收机android
- 12. Android广播接收器,每次应用启动时都会收到广播
- 13. android:是否显示非广播接收器?
- 14. 广播接收器没有收到广播
- 15. 是否有一个有序的广播接收机列表?
- 16. MEDIA_MOUNTED广播未收到
- 17. UDP广播没有收到
- 18. AlarmManager广播没有收到
- 19. Android没有收到广播UDP,但收到定向UDP
- 20. 广播接收
- 21. 广播接收
- 22. 有没有办法判断是否收到LocalBroadcastManager广播?
- 23. android广播接收器android 4
- 24. Android。混乱是否使用广播接收器或服务接收短信
- 25. 按顺序播放帧动画。 Android
- 26. Android按顺序播放声音
- 27. Android - 按顺序播放多个声音
- 28. Android Sms广播接收器尽管优先顺序没有触发
- 29. Android INSTALL_REFERRER否Google Play广播
- 30. Xamarin广播接收器没有收到
只是出于好奇,你没有这个答案的任何更新,是吗?我现在对同样的事情非常好奇。谢谢! – Patrick87