AndroidのsendStickyBroadcastとsendBroadcastの違いは何ですか


回答:


120

Android SDKについてsendStickyBroadcast()次のように述べています。

「スティッキー」なsendBroadcast(Intent)を実行します。これは、送信するインテントがブロードキャストの完了後も保持されるため、他のユーザーがregisterReceiver(BroadcastReceiver、IntentFilter)の戻り値を通じてそのデータをすばやく取得できるようにするためです。他のすべての点で、これはsendBroadcast(Intent)と同じように動作します。

オペレーティングシステムを介して送信されるスティッキーブロードキャストの一例はACTION_BATTERY_CHANGEDです。registerReceiver()そのアクションを呼び出すと、たとえaが付いていても、そのアクションの最後にブロードキャストされnull BroadcastReceiverIntentものを取得します。したがって、これを使用して、バッテリーの将来のすべての状態変化に必ずしも登録することなく、バッテリーの状態を見つけることができます。


6
意図はどれだけ粘着性があるのですか?registerReceiverをもう一度呼び出すと、同じインテントが再び返されますか?(そのアクションで追加の意図はないと仮定します。)
2012

22
@phreed:「registerReceiverをもう一度呼び出すと、同じインテントが再び返されますか?」 - はい。"パワーダウン?" -RAM内の何でもそうであるように、それらは消えます。「スクリーンオフ?」 - 無効。
CommonsWare

1
追記型のブロードキャストはMs Hackborn:groups.google.com/d/msg/android-developers/8341SaXhvmY/…によって厳しく禁止されていることを追加するだけです。古い投稿ですが、おそらくまだ適用されます
Mr_and_Mrs_D 2013年

1
@ Commonsware:私はあなたのポイントを理解できません。通常のインテントの例と同じシナリオのスティッキーインテントの例で説明してください。それから私は明確なアイデアを得るのに
役立ちます

4
@クシャル:「では、スティッキーブロードキャストの代わりに何をすべきでしょうか?」-私はあなたのユースケースが何であるかわからないので、私は本当にそれに答えることはできません。ビジネス要件を説明し、スティッキーブロードキャストを介してそれを解決することをどのように考えていたかを説明し、同じ問題を解決する別の方法を尋ねる新しいStack Overflow質問をすることを検討する場合があります。
CommonsWare、2015年

54

タイプ:-ローカル、通常、順序付き、スティッキー

通常の放送

:-sendBroadcast()を使用します

:-非同期ブロードキャスト

:-レシーバは特定の順序ではなくブロードキャストを受信します

注文した放送

:-sendOrderedBroadcast()を使用します

:-同期ブロードキャスト

:-レシーバーは優先度ベースでブロードキャストを受信します

:-このタイプのブロードキャストを中止することもできます

ローカル放送

:-ブロードキャストが同じプロセス内でのみ使用される場合にのみ使用

スティッキーブロードキャスト

:-これがシステムによって送信および処理された後は、通常のブロードキャストインテントは使用できなくなります。

:-sendStickyBroadcast(Intent)を使用します

:-対応するインテントはスティッキーです。つまり、送信するインテントは、ブロードキャストの完了後も残ります。

:-このため、他のユーザーはregisterReceiver(BroadcastReceiver、IntentFilter)の戻り値を通じてそのデータをすばやく取得できます。

:-sendBroadcast(Intent)と同じです。


非常に役立つ..
Maher Abuthraa

10

sendbroadcast() -通常の放送ですが、優先度を設定することもできます。

sendstickybroadcast()-これで渡された意図は、コード(動的レシーバー)を通じて登録する将来のユーザーに固執します。Androidに固執し、任意のブロードキャストレシーバーからの将来のリクエストに再配信または再ブロードキャストされるブロードキャスト

誰かがsendstickyBroadcast(intent);それを使用してスティッキーブロードキャストを送信すると、そのブロードキャストは、ダイナミックレシーバーを使用している将来のユーザーが利用できるようになります。

しかし、今sendStickyBroadcast()では非推奨のメソッドを使用すべき ではありません

Androidドキュメントから:

このメソッドはAPIレベル21で廃止されました。スティッキーブロードキャストは使用しないでください。それらはセキュリティ(誰でもアクセスできる)、保護(誰でも変更できる)、および他の多くの問題を提供しません。推奨されるパターンは、スティッキーでないブロードキャストを使用して何かが変更されたことを報告することであり、アプリが別のメカニズムで必要に応じて現在の値を取得することです

これがお役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.