¿Cómo implementar EventBus con RxJava – RxBus?

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.

Imagen 1. Entendiendo el RxJava –RxBus

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *