web-dev-qa-db-ja.com

LocalBroadcastManagerとContext.registerReceiver()、Context.sendBroadcast(Intent)、およびContext.unregisterReceiver()は同じですか?

Context.registerReceiver(), Context.sendBroadcast(Intent) , and Context.unregisterReceiver()を使用していました

しかし、クラスLocalBroadcastManagerを見たとき、それはContextのようにregisterReceiver(), sendBroadcast(Intent) , andunregisterReceiver()を持っています。

よくわかりません。いつLocalBroadcastManagerを使用する必要がありますか?それらはContextで同じですか?

よろしく、

ありがとう...

31
user948620

LocalBroadcastManagerは、その名前が示すように、アプリで使用できるのみブロードキャストメソッドの実装です。これにはいくつかの利点がありますが、最大のものは安全性であり、注意すべき穴が1つ少なくなります。実装に関して、覚えておくべきことがいくつかあります。

  • このクラスはAndroidサポートライブラリからのものです
  • メソッド呼び出しの前にはLocalBroadcastManager.getInstance([CONTEXT])を付ける必要があります。ここで[CONTEXT]は、ActivityなどのContextクラスのサブクラスです。
  • このクラスを使用する場合、それは純粋にyourアプリ用です。これを使用して受信者を登録し、システム全体のブロードキャストを行うと失敗します。

したがって、このクラスはContextと同じではなく、Contextのレシーバー/ブロードキャストメソッドの非常に具体的なアプリのみの実装です。リスナーがグローバル(システム全体)のブロードキャストを聞く意味がまったくない場合、およびブロードキャストがアプリの外部のものをターゲットにする必要がない場合に使用する必要があります。

51
A--C