android - qué - ¿Cuál es la diferencia entre EventBus y RxJava?
scheduler rx android (3)
Estoy confundido acerca de la diferencia entre EventBus y RxJava en Android. Necesito implementar uno de ellos para mi problema sobre la notificación de algunos componentes cuando se han realizado algunos cambios, para que puedan actualizar su estado.
Además, he leído que EventsBus ha quedado obsoleto en RxJava y no sé si esta información es verdadera o no.
Live @Vesko escribió, RxJava y el bus de eventos difieren en su naturaleza y pueden servir para resolver diferentes problemas. Sin embargo, hay algunos escenarios en los que ambos pueden resolver el mismo problema (aunque a diferentes costos), y esta podría ser la razón de por qué muchas personas confunden estos dos conceptos.
RxJava es conceptualmente similar a Android LiveData que se lanzó hace no mucho tiempo, y para comprender mejor estos conceptos, así como el bus de eventos, le sugiero que lea mi publicación. En la publicación repaso estos conceptos, describiendo los escenarios en los que deberíamos usar uno sobre el otro y los pros y los contras de usar uno en lugar de otro. Creo que puede ser útil para ti:
Si desea recuperar datos del servidor y actualizar la interfaz de usuario, use RxJava + Refrofit. Si actualiza la interfaz de usuario o realiza alguna operación sin obtener datos, EventBus es suficiente.
EventBus
y RxJava
son diferentes en su naturaleza.
EventBus
es solo un bus
como su nombre lo EventBus
: proporciona el mecanismo para suscribirse y publicar eventos en el "bus", sin que te importe cómo se realiza el cableado, qué es realmente este "bus", etc. En el contexto de Android, EventBus
es una manera más sencilla de lidiar con el envío y la recepción de mensajes de Broadcast
con menos repetitivo.
RxJava
por otro lado es mucho más poderoso que eso. Sí, puedes suscribirte y publicar eventos, pero tienes mucho más control sobre el proceso: frecuencia, en qué hilo ocurre todo, etc. El poder principal de RxJava
(en mi opinión) es que puedes manipular muy fácilmente los datos publicados. , utilizando algunas de sus toneladas de operators
.
Para resumir, si solo te importa publicar algunos eventos y realizar algunas acciones cuando los recibas, probablemente será mejor que utilices el más simple de los dos, es decir, algún tipo de Bus
o incluso los viejos y simples BroadcastReceiver
. Si también se beneficiará de la transformación de los datos, el manejo de subprocesos o el manejo simplificado de errores, RxJava
por el enfoque RxJava
. Solo tenga en cuenta que RxJava
generalmente tiene una curva de aprendizaje abrupta, por lo que toma algún tiempo acostumbrarse a su concepto.