以前的项目中使用的是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.hasObserv

本文介绍了如何使用RxJava2的RxBus替代EventBus进行事件通知和订阅,讨论了无背压和有背压处理的RxBus实现,并提供了发送和接收消息的代码示例,建议在实际项目中使用自定义消息类。同时提到了unregisterAll()方法的注意事项,该方法会导致所有消息无法接收,通常在退出应用时调用。
最低0.47元/天 解锁文章
692





