web-dev-qa-db-ja.com

スティッキーブロードキャストとは何ですか?

この用語は、Androidのドキュメントに付属の定義とともに記載されています

これらは、終了後にシステムがデータを保持するブロードキャストであるため、クライアントは次のブロードキャストを待たずにそのデータをすばやく取得できます。

どういう意味ですか?誰かが特定の例でその使用を詳しく説明できますか?この意図を使用するための許可を要求する必要があると思いますか?なんでそうなの?

<uses-permission Android:name="Android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents.
84
Shouvik

ここでマークマーフィーの説明をお読みください: AndroidでのsendStickyBroadcastとsendBroadcastの違いは何ですか

スティッキーブロードキャストの使用方法の抽象的な例を次に示します。

_Intent intent = new Intent("some.custom.action");
intent.putExtra("some_boolean", true);
sendStickyBroadcast(intent);
_

フリーズされた(onPause)アクティビティでこのブロードキャストを聞いている場合、実際のイベントを見逃す可能性があります。これにより、ブロードキャストが発生した後(onResume)にブロードキャストを確認できます。

EDIT:スティッキーブロードキャストの詳細...

また、レシーバーのonReceiveで使用するために removeStickyBroadcast(Intent) をチェックし、APIレベル5 +では isInitialStickyBroadcast() をチェックしてください。 。

お役に立てば幸いです。

105
Paul Burke

スティッキーブロードキャストは、システムに負荷がかかるため、お勧めできません。 Android Developersグループの 'Sticky Broadcasts and Concurrency Options' に関する議論のhackbodからのメモを読んでください。

@ Shouvik、StickyBroadcastの使用を検討している正確なシナリオを指定してください。誰かが代替ソリューションを提案できるかもしれません。

21
Nikhil_Katre

sendStickyBroadcast()は、スティッキーとして知られるsendBroadcast(Intent)を実行します。つまり、ブロードキャストが完了した後も、送信しようとしているインテントは残ります。そのため、他のユーザーはregisterReceiver(BroadcastReceiver, IntentFilter)。他のすべての方法では、これはsendBroadcast(Intent)と同じように動作します。オペレーティングシステム経由で送信されるスティッキーブロードキャストの一例は_ACTION_BATTERY_CHANGED_です。そのアクションに対してregisterReceiver()を呼び出すと、null BroadcastReceiverであっても、そのアクションに対して最後にブロードキャストされたインテントを取得します。したがって、これを使用して、バッテリーの将来のすべての状態変更を必ずしも登録することなく、バッテリーの状態を見つけることができます。

8

スティッキブロードキャストの値は、最後にブロードキャストされた値であり、現在スティッキキャッシュに保持されています。これは、現在受信したブロードキャストの価値ではありません。いつでもアクセスできるブラウザCookieのようなものだと言えるでしょう。スティッキーブロードキャストは廃止されました。

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

8
Lou Morda

システムによって送信および処理された後、通常のブロードキャストインテントは使用できなくなります。 sendStickyBroadcast(Intent)メソッドを使用する場合、インテントはスティッキーになります。つまり、送信しているインテントは、ブロードキャストの完了後も残ります。

私のブログを参照してください: ここにリンクの説明を入力してください

2
Arul Pandian