使用Rxjava实现Eventbus

来源:互联网 发布:数据仿真 教材 编辑:程序博客网 时间:2024/06/06 08:37
public class RxBus {    private static volatile RxBus instance;    //实现序列化    private SerializedSubject<Object, Object> bus;    private RxBus() {        bus = new SerializedSubject<>(PublishSubject.create());    }    public static RxBus getInstance() {        if (instance == null) {            synchronized (RxBus.class) {                if (null == instance) {                    instance = new RxBus();                }            }        }        return instance;    }    //产生被观察者   post发送    public void post(Object o) {        bus.onNext(o);    }    //被观察者对象    发送的是任意类型    public <T> Observable<T> tObservable(Class<T> event) {        //可以把任意类型返回Onservable类型        return bus.ofType(event);    }}在Activity中调用发送:
RxBus.getInstance().post();

接收:
RxBus.getInstance().tObservable(Student.class)        .subscribeOn(Schedulers.io())        .observeOn(AndroidSchedulers.mainThread())        .subscribe(new Action1<Student>() {            @Override            public void call(Student student) {                textView.setText("接收到的名字是:" + student.getName());            }        });





阅读全文
0 0