RxJava2实现RxBus

简介: RxJava2实现RxBus

RxJava 主要做异步、网络的数据处理,强大之处就是对数据的处理了,而对于处理完后的数据处理是一样的都是观察者模式来通知,也可以把 RxJava 进一步封装出一个 EventBus(RxBus) 库,二者可以转换的。


//引入rxJava

implementation 'io.reactivex.rxjava2:rxjava:2.1.8'

//引入rxAndroid

implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

//引入rxJava适配器,方便rxJava与retrofit的结合

implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'

//引入J神的rxrelay2,出现异常仍然可以处理

implementation 'com.jakewharton.rxrelay2:rxrelay:2.0.0'


直接上代码--->


1、创建RxBus

public class RxBus {
    private final Subject<Object> _bus;
    private static class RxBusHolder {
        private static final RxBus instance = new RxBus();
    }
    private RxBus() {
        _bus = PublishSubject.create();
    }
    public static synchronized RxBus getInstance() {
        return RxBusHolder.instance;
    }
    public void send(Object o) {
        _bus.onNext(o);
    }
    public <T> Observable<T> toObservable(Class<T> eventType) {
        return _bus.ofType(eventType);
    }
}


2、创建用于传递消息的尸体

public class RxBean {
    String msgs;
    public RxBean(String msg) {
        msgs = msg;
    }
    public String getMsgs() {
        return msgs;
    }
    public void setMsgs(String msgs) {
        this.msgs = msgs;
    }
}

3、发布消息

RxBus.getInstance().send(new RxBean("BasicPartyBuildingActivityRefresh"));

4、订阅消息

RxBus.getInstance().toObservable(RxBean.class).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<RxBean>() {
            @Override
            public void onSubscribe(Disposable d) {
            }
            @Override
            public void onNext(RxBean rxBean) {
                if ("BasicPartyBuildingActivityRefresh".equals(rxBean.getMsgs())) {
                   //要执行的代码
                }
            }
            @Override
            public void onError(Throwable e) {
            }
            @Override
            public void onComplete() {
            }
        });
目录
相关文章
|
3月前
|
安全 Android开发
你是否了解 RxJava 的 Disposable ?
你是否了解 RxJava 的 Disposable ?
72 0
|
29天前
|
JSON Java 数据格式
rxjava2+retrofit2
rxjava2+retrofit2
28 1
RxJava2 中 doFinally 和 doAfterTerminate 的比较
RxJava2 中 doFinally 和 doAfterTerminate 的比较
236 0
|
JSON Java 数据格式
rxjava2+retrofit2 简介
rxjava2+retrofit2 简介
75 0
|
安全 Android开发
详解 RxJava 的 Disposable
RxJava2 的 Disposable,可以在适当时机取消订阅、截断数据流,避免 Android 中的内存泄露。
982 0
|
Java Go Android开发
RxJava2
函数式编程是一种编程范式。我们常见的编程范式有命令式编程、函数式编程和逻辑式编程。我们常见的面向对象编程是一种命令式编程。命令式编程是面向计算机硬件的抽象,有变量、赋值语句、表达式和控制语句。而函数式编程是面向数学的抽象,将计算描述为一种表达式求值,函数可以在任何地方定义,并且可以对函数进行组合。响应式编程是一种面向数据流和变化传播的编程范式,数据更新是相关联的。把函数式编程里的一套思路和响应式编程合起来就是函数响应式编程。函数响应式编程可以极大地简化项目,特别是处理嵌套回调的异步事件、复杂的列表过滤和变换或者时间相关问题。在Android开发中使用函数响应式编程的主要有两大框架:
144 0
RxJava2
|
设计模式 存储 Java
XTask与RxJava的使用对比
XTask与RxJava的使用对比
135 0
XTask与RxJava的使用对比
|
负载均衡 算法 Java
RxJava 并行操作
RxJava 并行操作
377 0
RxJava 并行操作
|
Java API
RxJava 之 ParallelFlowable
RxJava 之 ParallelFlowable
218 0
RxJava 之 ParallelFlowable
|
API Android开发 Java
RxJava2 和 Retrofit2 结合使用详解
不讲 rxjava 和 retrofit 而是直接上手 2 了,因为 2 封装的更好用的更多。 1. 观察者模式 常见的 button 点击事件为例,button 是被观察者,listener 是观察者,setOnClickListener 过程是订阅,有了订阅关系后在 button 被点击的时候,监听者 listener 就可以响应事件。