Rx_java(3)Rx_java2的基本使用

相关文章

写在前面

经过前面俩节对观察者模式的学习,为学习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<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(@NonNull ObservableEmitter<String> e) throws Exception {
                e.onNext("hello");
                e.onNext("rxjava");
                e.onNext(getJsonDataFromNet());
                e.onNext("world");
                e.onComplete();
            }
        });

        // 创建观察者
        Observer<String> observer = new Observer<String>(){
            @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);
    }

运行结果为》:
这里写图片描述

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

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

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


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

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

3.通过just方式创建Observable

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

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

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

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

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

fromCallable方式只能发送一个数据

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

写在后面

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值