package com.wuxiaolong.androidsamples.rxjava; import rx.Observable; import rx.subjects.PublishSubject; import rx.subjects.SerializedSubject; import rx.subjects.Subject; /** * Created by Administrator on 2016/3/28. */ public class RxBus { private static RxBus mRxBus = null; /** * PublishSubject只会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者 */ private Subject<Object, Object> mRxBusObserverable = new SerializedSubject<>(PublishSubject.create()); public static synchronized RxBus getInstance() { if (mRxBus == null) { mRxBus = new RxBus(); } return mRxBus; } public void post(Object o) { if (hasObservers()) mRxBusObserverable.onNext(o); } public Observable<Object> toObserverable() { return mRxBusObserverable; } /** * 判断是否有订阅者 */ public boolean hasObservers() { return mRxBusObserverable.hasObservers(); } }