Antes de RxJava, usábamos bibliotecas de bus como Otto, EventBus, startActivityForResult Intent y otras para actualizar otros fragmentos en nombre del trabajo actual. Digamos que comenzamos la primera actividad, luego otra, luego otra, y así sucesivamente hasta que la cuarta actividad esté en primer plano y las otras tres en segundo plano. Si hacemos algún tipo de cambio desde la actividad en primer plano y luego volvemos a la actividad en segundo plano y cargamos datos nuevamente para actualizar la interfaz de usuario con nuevos datos, ya no necesitamos hacer esto; ya no necesitamos hacer más requests al servidor. Simplemente cree un evento RxBus y escuche donde quiera escuchar y actualice la interfaz de usuario.
Cuando usamos RxJava para implementar el paradigma EventBus, nos referimos a él como RxBus.
Nota : tenga en cuenta que esto es solo un ejemplo y debe estar familiarizado con el tema en RxJava.
Sin más preámbulos, comencemos creando RxBus.
Implementación paso a paso
Paso #1: Creación de RxBus
El primer paso es crear un RXBus a través del cual controlaremos todos los cambios de la interfaz de usuario, lo llamamos GfgRxGfgSampleBus(), a través de este, podemos acceder y realizar los cambios correspondientes.
Java
public class GfgRxGfgSampleBus { public GfgRxGfgSampleBus() { } private CoursePublications<Object> gfgSampleBus = CoursePublications.create(); public void send(Object o) { gfgSampleBus.onNext(o); } public Observable<Object> toObservable() { return gfgSampleBus; } }
Ahora, construiremos un RxBus Singleton (instancia única) en nuestra clase de aplicación o en cualquier otro lugar, en:
Paso #2: Creando Singleton en la aplicación
El siguiente paso es crear una aplicación Singelton. A través de esta aplicación escrita en Java, podemos acceder al Rx Bus que creamos en el paso anterior.
Java
public class GfgSampleApp extends Application { private RxSampleBus sampleBus; // Declaring an object @Override public void onCreate() { super.onCreate(); sampleBus = new RxSampleBus(); } public RxSampleBus sampleBus() { return sampleBus; } }
Como resultado, ahora podemos acceder a RxBus desde cualquier lugar. Podemos apuntarnos a un evento de cualquier clase. Lo que nos lleva a:
Paso #3: Acceso al evento de registro
Ahora accederemos al evento de registro que creamos en el paso anterior y luego realizaremos los cambios de interfaz de usuario que necesitamos usando Rx Bus, usando un objeto de consumo, que convertiremos en One Type Event, simplemente siga los pasos a continuación:
Java
((SampleGfGApp) getApplication()) .sampleBus() .toObservable() .subscribe(new Consumer<Object>() { @Override public void accept(Object gfgObject) throws Exception { if (gfgObject instanceof EventTypeOne) { Logger.d("GfG Articles are the best One"); } else if (gfgObject instanceof EventTypeTwo) { Logger.d("GfG Articles are the best Two"); } } });
Conclusión
Finalmente, tenemos el patrón EventBus con RxJava y RxBus. Sin embargo, si hay un problema, terminará, por lo tanto, verifique RxRelay para evitarlo.
Publicación traducida automáticamente
Artículo escrito por therebootedcoder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA