以前的项目中使用的是EventBus来实现事件的通知和订阅,RxJava2发布之后就使用了新的方式:RxBus,减少添加的依赖库。如果有什么错误的地方,或者有更好的建议的欢迎大家在下边留言,互相学习。
没有背压处理(Backpressure)的 RxBus
import android.support.annotation.NonNull;
import io.reactivex.Observable;
import io.reactivex.subjects.PublishSubject;
import io.reactivex.subjects.Subject;
public class RxBus {
private final Subject<Object> mBus;
private RxBus() {
mBus = PublishSubject.create().toSerialized();
}
public static RxBus getInstance() {
return Holder.BUS;
}
public void post(@NonNull Object obj) {
mBus.onNext(obj);
}
public <T> Observable<T> register(Class<T> tClass) {
return mBus.ofType(tClass);
}
public Observable<Object> register() {
return mBus;
}
public boolean hasObservers() {
return mBus.hasO