RxJava实现EventBus

直接上代码:
1.创建RxBus对象(单例模式)

public class RxBus {

private final Subject mBus;
private RxBus() {
    mBus = new SerializedSubject<>(PublishSubject.create());
}
public static RxBus getDefault() {
    return Holder.rxBus;
}
private static final class Holder {
    private final static RxBus rxBus = new RxBus();
}
public <T> Observable register(Class<T> event) {
    return mBus.ofType(event);
}
public void unRegister(Subscription subscriber) {
    subscriber.unsubscribe();
}

}

2.发送事件(发送消息调用post方法就可以发送不同类型的事件)

RxBus.getDefault().post(new RxBusEvent());

3.接受事件(在需要接收消息处订阅)

RxBus.getDefault().toObservable(RxBusEvent.class)

            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Action1<RxBusEvent>() {
                @Override
                public void call(RxBusEvent rxBusEvent) {
                  //接收到事件代码逻辑
                }
            });

猜你喜欢

转载自blog.csdn.net/qq_19707091/article/details/78119767