2016-02-28 6 views
25

アンドロイドのEventBusとRxJavaの違いについて私は混乱しています。いくつかの変更が行われたときにコンポーネントに通知することについて、自分の状態を更新できるように、私の問題のためにそれらの1つを実装する必要があります。
また、EventsBusがRxJavaで廃止され、この情報が真であるかどうかわかりません。EventBusとRxJavaの違いは何ですか?

+2

RxJavaは、基本的にEventBus以上の機能を果たしています。 –

+2

[Android Pros&Cons:Event Bus and RxJava](http://stackoverflow.com/)の重複している可能性があります。質問/ 30147877/android-pros-cons-event-bus-and-rxjava) –

+5

オットーは廃止されましたが、GreenRobotは廃止されました。 http://greenrobot.org/eventbus/ – Kuffs

答えて

71

EventBusおよびRxJavaはその性質が異なる。

EventBusはちょうどの名前であり、配線がどのように行われているか、この「バス」が実際にどのようなものかを意識することなく、イベントを「バス」に登録して公開する仕組みを提供します。 Androidのコンテキストでは、EventBusはほんの少しの定型文でBroadcastメッセージを送受信する方が簡単です。その一方で、それよりはるかに強力です。

RxJavaはい、あなたは、イベントを購読して公開することができますが、スレッドのすべてが起こる頻度など、プロセスのコントロールははるかにあります。RxJava(私の意見では)の主な機能は、そのトン数はoperatorsです。

いくつかのイベントを公開し、受け取ったときに何らかのアクションを実行するだけの場合は、最も単純なもの、つまりBusのいずれか、または普通の古いBroadcastReceiverを使用する方がよいでしょう。データの変換、スレッド化の処理、またはエラー処理の簡略化のメリットがある場合は、RxJavaのアプローチを参照してください。 RxJavaには一般的に急な学習曲線があるので、そのコンセプトに慣れるまでには時間がかかります。

+0

あなたの答えに感謝します。 EventBusを使用する際の短所は何ですか?それはRxJavaに比べて制限されていますか? – HiddenDroid

+2

@HiddenDroidはいです。あなたはEventBusを先に進めることができますが、私の意見では、RxJavaにはそのオペレータが多く提供しています。 RxJavaは普及しています(実際にはRxJava、一般的なリアクティブプログラミングだけではありません)。多くのライブラリにAPI(例:Retrofit)が含まれています。ちなみに、覚えていれば使いやすいです。 – mewa

+2

@HiddenDroid: 'EventBus'の特別な欠点は考えられません。常にあなたの仕事が何であるかが分かります。私が私の答えで言ったように - もしあなたがいくつかのイベントを送る/送る必要があるなら、バスは仕事を完璧にやるでしょう。あなたの仕事がそれよりも複雑なら、おそらく他の解決策を検討する価値があります。トリックは、タスクのための適切なツールを見つけることですので、RxJavaに自分自身を押し入れる必要はありません。1-2 BroadcastReceivers ... – Vesko