Skip to content

Instantly share code, notes, and snippets.

@tanjo
Last active September 13, 2017 06:42
Show Gist options
  • Save tanjo/8a815e9a060e248cbd2adbf4d05ebbae to your computer and use it in GitHub Desktop.
Save tanjo/8a815e9a060e248cbd2adbf4d05ebbae to your computer and use it in GitHub Desktop.
RxBus をシンプルに

RxBus をちょびっとシンプルに書く

ベースはここ

違うところ

趣味の領域だが、subscribe に以下の処理を入れたり、 filtero -> o instanceof SomeEventmapo -> (SomeEvent) o) を記載するとダサいのでスマートに書く

if (o instanceof SomeEvent) {
  // イベントが来ました
}

RxBus

詳しくは Java ファイルで

書き方

重要なところだけ記載 それ以外は上記のリンク先を参照

RxBusProvider
    .getInstance()
    .toObservable(UpdateHogeEvent.class)
    .map(UpdateHogeEvent::getHoge)
    .subscribe(hoge -> Log.i("Hoge", hoge.toString(), Throwable::printStackTrace);
package in.tanjo.rxjava.test;
import io.reactivex.Observable;
import io.reactivex.subjects.PublishSubject;
public class RxBus {
private final PublishSubject<Object> bus = PublishSubject.create();
public void send(final Object event) {
bus.onNext(event);
}
public Observable<Object> toObservable() {
return bus.hide();
}
public <T> Observable<T> toObservable(Class<T> tClass) {
return bus.cast(tClass).retry();
}
public boolean hasObservers() {
return bus.hasObservers();
}
}
package in.tanjo.rxjava.test;
public class RxBusProvider {
private static final RxBus BUS = new RxBus();
private RxBusProvider() {
// No instances.
}
public static RxBus getInstance() {
return BUS;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment