2016-02-28 22 views
25

Sono confuso circa la differenza tra EventBus e RxJava in Android. Devo implementarne uno per il mio problema sulla notifica di alcuni componenti quando sono state apportate alcune modifiche, in modo che possano aggiornare il loro stato.
Inoltre, ho letto che EventsBus è diventato deprecato su RxJava e non so se questa informazione sia vera o meno.Qual è la differenza tra EventBus e RxJava?

+2

Per quanto ne so, servono a scopi leggermente diversi, ma, in sostanza, RxJava può fare molto di più di EventBus –

+2

Possibile duplicato di [Pro e Contro Android: Event Bus e RxJava] (http://stackoverflow.com/ domande/30147877/android-pros-cons-event-bus-and-rxjava) –

+5

Otto è deprecato ma GreenRobot no. http://greenrobot.org/eventbus/ – Kuffs

risposta

71

EventBus e RxJava sono diversi nella loro natura.

EventBus è solo un bus come suggerisce il nome: fornisce il meccanismo per iscriversi e pubblicare eventi sul "bus", senza preoccuparsi di come il cablaggio è fatto, di cosa sia effettivamente questo "bus", ecc. contesto di Android, il EventBus è solo un modo più semplice per gestire l'invio e la ricezione di messaggi Broadcast con un numero minore di caratteri.

RxJava d'altra parte è molto più potente di quello. Sì, puoi sottoscrivere e pubblicare eventi, ma hai molto più controllo sul processo - frequenza, su quale thread succede, ecc. La potenza principale di RxJava (a mio parere) è che puoi manipolare i dati che vengono pubblicati molto facilmente , utilizzando alcune delle sue tonnellate di operators.

Per riassumere - se vi interessa soltanto la pubblicazione di alcuni eventi e l'esecuzione di alcune azioni quando ha ricevuto - si sarebbe probabilmente meglio utilizzare il più semplice dei due, vale a dire una sorta di Bus, o anche semplici vecchi BroadcastReceiver s. Se trarrai vantaggio anche dalla trasformazione dei dati, dalla gestione del threading o dalla gestione semplificata degli errori, vai all'approccio RxJava. Tieni presente che in genere lo RxJava ha una curva di apprendimento molto elevata, quindi è necessario del tempo per abituarsi al suo concetto.

+0

Grazie per la tua risposta. quali sono gli svantaggi dell'uso di EventBus? è limitato rispetto a RxJava? – HiddenDroid

+2

@HiddenDroid Sì, lo è; potresti andare avanti con EventBus ma a mio parere RxJava ha molto da offrire con i suoi operatori. RxJava sta guadagnando popolarità (in realtà non solo RxJava, programmazione reattiva in generale) e troverete che molte librerie lo includono nelle loro API (ad esempio, Retrofit). In una nota a margine, è molto comodo usarlo una volta che ci si abitua. – mewa

+2

@HiddenDroid: Non riesco a pensare ad alcuno svantaggio specifico di "EventBus": si tratta sempre del tuo compito. Come ho detto nella mia risposta - se hai solo bisogno di inviare/rispondere ad alcuni eventi - l'autobus farà il lavoro perfettamente. Se il tuo compito è più complicato di così - forse vale la pena esplorare altre soluzioni. Il trucco è trovare lo strumento giusto per l'attività, quindi non è necessario spingersi in RxJava se tutto ciò che serve sono 1-2 BroadcastReceivers ... – Vesko

Problemi correlati