私はそれが良い/悪い/ちょうどいいデザインであるかどうか誰かが私に教えてくれることを望んで、私のアプリのコミュニケーションがどのように働くかを説明したいと思います。Android:BroadcastReceiverを間違って使用していますか?
私のアプリは、単一のアクティビティ複数のフラグメントです。アクティビティには、プログレスバーアニメーションの表示/非表示やスナックバーの表示など、いくつかの一般的な機能があります。これは、1つの場所でのみ実装する必要がある機能です。
私のフラグメントは、フラグメントにない機能が必要なときはいつでもブロードキャストを送信します。フラグメントは、スナックバーのメッセージを表示したい場合たとえば、私はこのようなブロードキャストを送信します:
localBroadcastManager.sendBroadcast(new SnackBarIntent("Show this text"));
活動は、この放送を受信し、スナックバーのメッセージを示しています。もちろん、これは片方向のメッセージです。私の断片は放送が受信されたかどうかわかりません。しかし、すべてで、それは動作します。私はどこからでも放送、サービス、アダプターなどを送ることができます。私が望むなら、断片間にブロードキャストを送ることもできます。
これに代わるものがあると私は理解しています。 EventBusがあります。または、私は、ActivityのリファレンスをFragment、Adapterなどに渡すことができます。これは適切なガベージコレクションを妨げる恐ろしいアイデアのように聞こえます。
次に、私の断片がActivityから取得したObservableを購読していると思われるRxJavaがあります。
しかし、この方法でBroadcastReceiverを使用するのは悪いですか?もしそうなら、なぜですか?
ありがとうございました。あなたがインターフェースと言うとき、アクティビティーがインターフェースを実装すべきだと言っていますか?そのインターフェースをフラグメントに渡しますか?フラグメントがアクティビティへの参照を保持すると、メモリリークが発生する可能性があります。 –