アンドロイドのEventBusとRxJavaの違いについて私は混乱しています。いくつかの変更が行われたときにコンポーネントに通知することについて、自分の状態を更新できるように、私の問題のためにそれらの1つを実装する必要があります。
また、EventsBusがRxJavaで廃止され、この情報が真であるかどうかわかりません。EventBusとRxJavaの違いは何ですか?
答えて
EventBus
およびRxJava
はその性質が異なる。
EventBus
はちょうどの名前であり、配線がどのように行われているか、この「バス」が実際にどのようなものかを意識することなく、イベントを「バス」に登録して公開する仕組みを提供します。 Androidのコンテキストでは、EventBus
はほんの少しの定型文でBroadcast
メッセージを送受信する方が簡単です。その一方で、それよりはるかに強力です。
RxJava
はい、あなたは、イベントを購読して公開することができますが、スレッドのすべてが起こる頻度など、プロセスのコントロールははるかにあります。RxJava
(私の意見では)の主な機能は、そのトン数はoperators
です。
いくつかのイベントを公開し、受け取ったときに何らかのアクションを実行するだけの場合は、最も単純なもの、つまりBus
のいずれか、または普通の古いBroadcastReceiver
を使用する方がよいでしょう。データの変換、スレッド化の処理、またはエラー処理の簡略化のメリットがある場合は、RxJava
のアプローチを参照してください。 RxJava
には一般的に急な学習曲線があるので、そのコンセプトに慣れるまでには時間がかかります。
あなたの答えに感謝します。 EventBusを使用する際の短所は何ですか?それはRxJavaに比べて制限されていますか? – HiddenDroid
@HiddenDroidはいです。あなたはEventBusを先に進めることができますが、私の意見では、RxJavaにはそのオペレータが多く提供しています。 RxJavaは普及しています(実際にはRxJava、一般的なリアクティブプログラミングだけではありません)。多くのライブラリにAPI(例:Retrofit)が含まれています。ちなみに、覚えていれば使いやすいです。 – mewa
@HiddenDroid: 'EventBus'の特別な欠点は考えられません。常にあなたの仕事が何であるかが分かります。私が私の答えで言ったように - もしあなたがいくつかのイベントを送る/送る必要があるなら、バスは仕事を完璧にやるでしょう。あなたの仕事がそれよりも複雑なら、おそらく他の解決策を検討する価値があります。トリックは、タスクのための適切なツールを見つけることですので、RxJavaに自分自身を押し入れる必要はありません。1-2 BroadcastReceivers ... – Vesko
RxJavaは、基本的にEventBus以上の機能を果たしています。 –
[Android Pros&Cons:Event Bus and RxJava](http://stackoverflow.com/)の重複している可能性があります。質問/ 30147877/android-pros-cons-event-bus-and-rxjava) –
オットーは廃止されましたが、GreenRobotは廃止されました。 http://greenrobot.org/eventbus/ – Kuffs