package com.example.rxbusdemo;
import io.reactivex.Flowable;
import io.reactivex.processors.FlowableProcessor;
import io.reactivex.processors.PublishProcessor;
import io.reactivex.subscribers.SerializedSubscriber;
import io.reactivex.processors.FlowableProcessor;
import io.reactivex.processors.PublishProcessor;
import io.reactivex.subscribers.SerializedSubscriber;
/**
* Created by hasee on 2018/1/31.
*/
* Created by hasee on 2018/1/31.
*/
public class RxBus {
private static RxBus mRxBus;
private final FlowableProcessor<Object> objectFlowableProcessor;
private static RxBus mRxBus;
private final FlowableProcessor<Object> objectFlowableProcessor;
private RxBus() {
objectFlowableProcessor = PublishProcessor.create().toSerialized();
}
objectFlowableProcessor = PublishProcessor.create().toSerialized();
}
public static RxBus getDefault() {
if (mRxBus == null) {
synchronized (RxBus.class) {
if (mRxBus == null) {
mRxBus = new RxBus();
}
}
}
return mRxBus;
}
if (mRxBus == null) {
synchronized (RxBus.class) {
if (mRxBus == null) {
mRxBus = new RxBus();
}
}
}
return mRxBus;
}
public void post(Object object) {
new SerializedSubscriber(objectFlowableProcessor).onNext(object);
}
new SerializedSubscriber(objectFlowableProcessor).onNext(object);
}
public <T> Flowable<T> toFlowable(Class<T> clazz) {
return objectFlowableProcessor.ofType(clazz);
}
return objectFlowableProcessor.ofType(clazz);
}
}