8

Androidの互換性パックはLocalBroadcastManagerをサポートしており、プロセス内でブロードキャストを送信できます。 http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html

これまで、コールバック(OnClickListenerに似たインターフェイス)を使用して、アプリのさまざまな部分間でデータ(非同期および同期)を転送していました。

どちらがもう一方よりも優れているのだろうかと思っていました。何か意見はありますか?

4

2 に答える 2

7

LocalBroadcastManagerIntent'sと'sを使用できるIntentFilterため、システム全体のブロードキャストからローカルブロードキャストへの移行が簡単になります。また、いくつかのキューイングコードがあり、独自のコードよりも信頼性が高い場合があります(または、実装の高度さによってはそうではありません)。それ以外は、基本的には受信者のリストをメモリに保持し、それらを繰り返して一致するものを見つけます。

もう1つの代替手段は、Square's Otto(Guavaに基づく)などのイベントバスを使用することです。これにより、型の安全性が向上し、同様に効率的です。

于 2012-12-19T09:18:55.383 に答える
2

私の知る限り、LocalBroadcastManagerは魅力のように機能します。手間がかからず、Intent内で任意の引数を渡し、リスニング中にそれを取り戻すことができます。唯一の信頼性は、ブロードキャストマネージャーがインテントをキューに入れることです。

LocalBroadCastManagerはいつ使用する必要がありますか? 単一のアクティビティ(FragmentActivity)と大量のFragmentクラスがある場合は、単一のアクティビティ内にlocalBroadcastManagerを配置する方が簡単です。

アクティビティがたくさんある場合は、これを使用すると役立つ場合がありますが、すでにインテントを使用して新しいアクティビティを起動していることにも注意してください。保留中のインテントがある場合は、このブロードキャストがキューに入れられ、次のことを行う必要があります。待つ。

したがって、最適な使用法は、多数のフラグメントを含む単一のアクティビティです。

于 2014-04-10T07:29:08.337 に答える