如果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