38

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

しかし、私がクラスを見たときLocalBroadcastManager、それはregisterReceiver(), sendBroadcast(Intent) ,unregisterReceiver()が好きですContext

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

よろしく、

ありがとう...

4

1 に答える 1

54

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

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

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

于 2012-11-28T03:42:20.860 に答える