Wednesday, June 15, 2016

Event bus menggunakan RxJava

Pada blog sebelumnya saya telah membahas tuntas tentang Event Bus dan imeplementasi menggunakan otto. Dan sayang sekali Otto sudah deprecated dan tim otto merekomendasikan menggunakan RxJava dan RxAndroid yang mempunyai kemampuan lebih baik untuk mengontrol thread.

Tambah di Gradle:

compile 'io.reactivex:rxandroid:1.2.0'
compile 'io.reactivex:rxjava:1.1.5'

Buat class RxBusEventHelper
import rx.Observable;
import rx.subjects.PublishSubject;
public class RxBusEventHelper {
    private PublishSubject<Object> subject = PublishSubject.create();
    public RxBusEventHelper(){
    }
    /**
     * Pass any event down to event listeners.
     */
    public void send(Object object) {
        subject.onNext(object);
    }
    /**
     * Subscribe to this Observable. On event, do something
     * e.g. replace a fragment
     */
    public Observable<Object> getEvents() {
        return subject;
    }
}

Contoh publish event:
mRxBusEventHelper.send(new YourEventName());

Contoh subscribe event
Action1<object> subscribeEvent = new Action1<object>() {
    @Override
    public void call(Object o) {
        if(o instanceof YourEventName)
            doSomething();
    }
}


Sekian blog dari saya semoga bermanfaat.

No comments:

Post a Comment