web-dev-qa-db-ja.com

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

AndroidのsendStickyBroadcastsendBroadcastの違いは何ですか?

102
cobject

ここにAndroid SDKがsendStickyBroadcast()について言っているものがあります

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

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

117
CommonsWare

タイプ:-Local、Normal、Ordered、Sticky

通常のブロードキャスト

:-sendBroadcast()を使用します

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

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

注文されたブロードキャスト

:-sendOrderedBroadcast()を使用します

:-同期放送

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

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

ローカルブロードキャスト

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

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

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

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

:-対応するインテントはスティッキーです。つまり、ブロードキャストが完了した後も、送信するインテントは維持されます。

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

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

49
Umang Kothari

sendbroadcast()-通常のブロードキャストですが、優先度も設定できます。

sendstickybroadcast()-これで渡されるインテントは、コードを介して登録する将来のユーザー(ダイナミックレシーバー)に適用されます。 Androidに固執するブロードキャストは、ブロードキャストレシーバーからの今後のリクエストに応じて再配信または再ブロードキャストされます。

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

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

From Android Documentation:

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

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

10
Rajesh