Rx_java(3)Rx_java2的基本使用

相关文章

  • 观察者模式实例讲解
  • 使用java中的类(Observable与Observer)实现观察者模式
  • Rx_java2中的线程控制
  • Rx_java2操作符介绍1(Map、Flatmap)
  • Rx_java2操作符介绍2(debounce 、filter 、switchMap )
  • Rx_java2操作符介绍3(throttleFirst、debounce )
  • Retrofit结合RxJava2使用

写在前面

经过前面俩节对观察者模式的学习,为学习Rx_java奠定了基础,本篇开始,正式开始学习Rx_java2。你也可以通过文旦去全面的学习Rxjava,Rxjava中文文档下载

RX_java中的几个概念:

  • Observable:被观察者
  • Observer/Subscriber:观察者
  • Subscribe:订阅

Observable和Observer通过subscribe()方法实现订阅关系

Rx_java的几种书写方式

1. 使用create方式

其中onNext()方法相当于数据发生了变化调用的方法
onError()方法是发生错误调用的方法
onComplete()是数据变化完成后调用的方法 ,需要注意的是。onError和onComplete方法是互斥的。
onSubscribe(Disposable d)方法,在代码注释中详细进行了介绍。

 public static void createObservable(){
        // 创建被观察者,
        Observable observable = Observable.create(new ObservableOnSubscribe() {
            @Override
            public void subscribe(@NonNull ObservableEmitter e) throws Exception {
                e.onNext("hello");
                e.onNext("rxjava");
                e.onNext(getJsonDataFromNet());
                e.onNext("world");
                e.onComplete();
            }
        });

        // 创建观察者
        Observer observer = new Observer(){
            @Override
            public void onSubscribe(@NonNull Disposable d) {
                // d.isDisposed();  // 判断观察者与备观察者是否发生了订阅关系
                //  d.dispose();    // 解除观察者与被观察者的订阅关系
            }

            @Override
            public void onNext(@NonNull String s) {
                Log.i(TAG,s);
            }

            @Override
            public void onError(@NonNull Throwable e) {
                Log.i(TAG,e.getMessage());
            }

            @Override
            public void onComplete() {
                Log.i(TAG,"complete");
            }
        };
        // 绑定观察者与被观察者
        observable.subscribe(observer);
    }

运行结果为》:
Rx_java(3)Rx_java2的基本使用_第1张图片

2.Observer(观察者的另一种创建方式)

有时候,我们不需要使用Oberver中的所有方法(onNext、onError、onComplete、onSubcriber),只需要重写自己需要的即可,那么我们需要按如下方法去创建Oberver

Observable observable = Observable.create(new ObservableOnSubscribe() {
            @Override
            public void subscribe(@NonNull ObservableEmitter e) throws Exception {
                e.onNext("hello");
                e.onNext("rxjava");
                e.onNext(getJsonDataFromNet());
                e.onNext("world");
                e.onComplete();
            }
        });


        observable.subscribe(   new Consumer() {
            @Override
            public void accept(String s) throws Exception {
                // 表示onNext()方法
            }
        }, new Consumer() {
            @Override
            public void accept(Throwable throwable) throws Exception {
                // 表示onError方法
            }
        }, new Action() {
            @Override
            public void run() throws Exception {
                // 表示onComplete()方法
            }
        }, new Consumer() {
            @Override
            public void accept(Disposable disposable) throws Exception {
                // 表示onSubscribe()方法
            }
        });

其中,第一个Consumer参数,表示onNext()方法,第二个Consumer参数表示onError()方法,第三个参数为Action表示onComplete()方法,第四个参数Consumer表示onSubscribe()方法。可以根据需要去写创建参数。

3.通过just方式创建Observable

just方式可以添加多个参数,然后按顺序发送输出

 // 创建被观察者
        Observable observable = Observable.just("hello", "rxjava", getJsonDataFromNet(), "world");

        // 订阅
        observable.subscribe(   new Consumer() {
            @Override
            public void accept(String s) throws Exception {
                // 表示onNext()方法
            }
        }, new Consumer() {
            @Override
            public void accept(Throwable throwable) throws Exception {
                // 表示onError方法
            }
        }, new Action() {
            @Override
            public void run() throws Exception {
                // 表示onComplete()方法
            }
        }, new Consumer() {
            @Override
            public void accept(Disposable disposable) throws Exception {
                // 表示onSubscribe()方法
            }
        });

4.from方式创建Observable

fromArray方式创建

fromArray创建跟just方式创建是一样的,看just源码,其实就是调用的fromArray方法

// fromArray方式创建Observable被观察者
Observable observable = Observable.fromArray("hello", "rxjava", getJsonDataFromNet(), "world");
fromCallable方式创建Observable

fromCallable方式只能发送一个数据

Observable observable = Observable.fromCallable(new Callable() {
            @Override
            public String call() throws Exception {
                return "hello";
            }
        });

写在后面

本篇介绍了Rxjava2的基本使用方式,下篇将介绍Rxjava2的线程控制。Rx_java2中的线程控制

你可能感兴趣的:(Rx-java)