2012-03-31 19 views
12

Androidでさまざまな種類の送信ブロードキャストに関するドキュメントと多少混同されています。たとえば、sendStickyBroadcast(),sendBroadcast(),sendOrderedBroadcast()およびsendStickyOrderedBroadcast()があります。Androidのさまざまな種類のブロードキャストの違い

スティッキー、ノーマル、オーダーの違いは何ですか?

答えて

46

スティッキブロードキャストと付箋を比較できます。誰かがそれを投稿し、あなたが投稿したときに関係なく/あなたのアプリケーションの開始時に読むことができます。

注文された放送は、メモを渡すようなもので、人/アプリケーションから人/アプリケーションに渡されます。チェーンのどこにいても、受信者はブロードキャストをキャンセルしてチェーンの残りの部分がそれを見るのを防ぐことができます。

正常に放送されています。まあ、聞いてみると登録した人は&です。

は受信機だけが彼らに耳を傾け、実行中のアプリケーションにを登録できるように放送のバリエーションがあります - すなわちあなたのAndroidManifest.xml内の受信機意志ないこれらのインテント用トリガ。

+1

すてきな説明! – Akhil

+0

とても良い説明です。 –

26

通常のブロードキャスト:通常のブロードキャスト(Context.sendBroadcastで送信)は完全に非同期です。ブロードキャストのすべての受信者は、しばしば同時に定義されていない順序で実行されます。これはより効率的ですが、受信者が結果を使用したり、ここに含まれるAPIを中止することはできません。

オーダードブロードキャスト: - オーダードブロードキャストは、同期方式で、つまり各リスナーに1つずつ送信されるブロードキャストのタイプです。

Android sendOrderedBroadcastメソッドは、Androidのコンテキストクラスに属します。このメソッドの目的は、受信側の受信者にシリアル化された方法でブロードキャストし、その結果を呼び出し側のアクティビティに戻すことです。私はAndroidのsendOrderedBroadcastのようなものを探していましたが、それを見つけることができませんでした。 sendOrderedBroadcastのもう一つの重要な利点は、BroadcastReceiverの優先順位を設定できることです。このようにして、その特定の放送を聞いているすべての放送受信者は、その特定の放送を順序付けられた方法で受信する。今すぐ順番に放送を受信して​​いるので、受信者の流れを中断したい場合は、abortBroadcast()によって何ができるのか推測してください。

スティッキー放送: - Aスティッキー放送、それがシステムに発表された瞬間、次のまわりのまま放送されています。ほとんどの放送は送信され、システム内で処理され、すぐにアクセスできなくなります。ただし、スティッキーブロードキャストは、処理される時点を超えてアクセス可能な情報を通知します。典型的な例は、バッテリーレベルの放送である。ほとんどのブロードキャストとは異なり、バッテリレベルは、システム内で送信された時点を超えてアプリケーション内で取り出すことができます。つまり、アプリは最後のバッテリー残量が何であったかを知ることができます。

+0

私はあなたが優先順位でリスナーに送信されるので、順序付きブロードキャストは同期していると言えるでしょう。呼び出しはまだ非同期です(混乱がある場合)。 – Alan

関連する問題