2011-07-18 14 views

答えて

8

ブロードキャストBを取得する前に、それぞれの受信者がそれぞれのブロードキャストAを受け取ることを保証する方法があるかどうかを尋ねてきたと思います。私ができる最良の答えは、すべてのブロードキャストがそれらを順番に処理するActivityManagerしかし、私はフレームワークにこの動作を「保証」するものはないと考えています(ActivityManagerにキューが見つからず、そのようなものがすべて投稿されているなど)。また、BroadcastReceiverは一度に1つのインテントしか処理しません。

代わりに「各放送が送信される受信者の順序を制御することはできますか」を意味する場合、答えは他のものと同様にsendOrderedBroadcast()となります。

+0

ちょうど好奇心から、あなたはこの答えのための更新をありませんか?私は現時点で同じことについて非常に不思議です。ありがとう! – Patrick87

-1

注文を保証するために、sendOrderedBroadcast(これを支配する場合)を使用することをお勧めします。

+1

、残念ながらこれは、与えられた単一のブロードキャストを保証する手段はで受信機によって消費されsendOrderedBroadcast'provides 'ためのソリューションではありません優先順位残念なことに、複数の別々の放送が受信される順序を維持することとは何の関係もありません。これは質問と関連しています。 – Trevor

0

ブロードキャストAの動作チェックを行うことができます。存在しない場合は、Aが発生するまでBを使用しないでください。だから彼らは後方に受け取られるかもしれませんが、それでも適切に行動しましたか?

+0

ブロードキャストの動作を確認するにはどうすればよいですか?これは受信者によって行われますか?ありがとう。 –

+0

このアイデアのバリエーションは、ブロードキャスト送信者が送信する各放送の「インテント」内に増分するシーケンス番号を挿入することである可能性があります。このようにして、受信機は、連続した放送が送信された順序とは異なる順序で受信されたかどうかを検出し、適切な処置をとることができます。これは、誰かがAndroidシステムが注文を保証していることが証明されるまで、良いベルトと括弧の安全対策として使用することができます。 – Trevor

3

この質問についていくつかの詳細情報はここで見つけることがあります。

放送受信機の実行を。 ダイアンHackbornの書き込みはリンクhttps://groups.google.com/forum/#!topic/android-developers/ClIGNuGJUts



...

「特定の受信機は、一度に1つのブロードキャストを処理することができる。各放送が起こるように、それを決定するために処理されますターゲットに向かうべきターゲット、各ターゲットのメッセージキューにディスパッチされます。後でブロードキャストが送信されると、それは一般にキューより先に移動されません。

スクリーンのオン/オフブロードキャストについては、最もrecあなたがスクリーンの現在の状態になることをブロードキャストします。一度すべてが落ち着いたら。あなたは、他の放送、あるいはまた、放送を受信することができる他の放送受信機を発注するに頼ることはできません。」


この記事は、おそらく同期配信のためsendBroadcastSync()を使用して示唆しているが、それを保証するものではありません。混乱がどこにあるか私が見ることができますが

Does LocalBroadcastManager deliver events in the order in which the events wer sent?

+0

公式の参考文献があるので、これはアップアップして受け入れられた答えでなければなりません。 – Blaisorblade

関連する問題