package bigfat.com.rxbusdemo.rxbus; import rx.Observable; import rx.subjects.BehaviorSubject; import rx.subjects.PublishSubject; import rx.subjects.SerializedSubject; /** * Created by yueban on 12:47 31/3/16. * Email: fbzhh007@gmail.com * QQ: 343278606 */ public class RxBus { private static final String TAG = RxBus.class.getSimpleName(); private SerializedSubject<Object, Object> rxBusStandard; private SerializedSubject<Object, Object> rxBusSticky; @SuppressWarnings("unchecked") private RxBus() { rxBusStandard = new SerializedSubject(PublishSubject.create()); rxBusSticky = new SerializedSubject(BehaviorSubject.create()); } private static RxBus getInstance() { return RxBusHolder.RX_BUS; } public static void postEvent(Object event) { getInstance().rxBusStandard.onNext(event); } public static void postEventSticky(Object event) { getInstance().rxBusSticky.onNext(event); } public static Observable<Object> toObservable() { return getInstance().rxBusStandard.asObservable().onBackpressureBuffer(); } public static Observable<Object> toObservableSticky() { return getInstance().rxBusSticky.asObservable().share().onBackpressureBuffer(); } public static boolean hasObservers() { return getInstance().rxBusStandard.hasObservers(); } public static boolean hasObserversSticky() { return getInstance().rxBusSticky.hasObservers(); } private static class RxBusHolder { private static final RxBus RX_BUS = new RxBus(); } }