• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Rxjava基础入门

武飞扬头像
魔幻音
帮助1

定义

Rxjava基于事件流、实现异步操作。

使用

引入依赖

implementation "io.reactivex.rxjava3:rxjava:3.1.2"
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'

方法一

创建被观察者Observable及其产生的事件

Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(@NonNull ObservableEmitter<Integer> emitter) throws Throwable {
                emitter.onNext(1);
                emitter.onNext(2);
                emitter.onNext(3);
                emitter.onComplete();
            }
        });

创建观察者并定义响应事件的行为

采用Observer接口实现

        Observer<Integer> observer = new Observer<Integer>() {
            @Override
            public void onSubscribe(@NonNull Disposable d) {
                Log.d("main", "开始采用subscribe连接");
            }

            @Override
            public void onNext(@NonNull Integer integer) {
                Log.d("main", "next"   integer);
            }

            @Override
            public void onError(@NonNull Throwable e) {
                Log.d("main", "对Error事件作出响应");
            }

            @Override
            public void onComplete() {
                Log.d("main", "onComplete");
            }
        };
学新通

将观察者与被观察者关联起来(Subscribe)

observable.subscribe(observer);

此后Observable会发送对应任务,observer会依据数据进行任务处理

方法二

基于事件流直接完成任务生产及处理操作

Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(@NonNull ObservableEmitter<Integer> emitter) throws Throwable {
                emitter.onNext(1);
                emitter.onNext(2);
                emitter.onNext(3);
                emitter.onComplete();
            }
        }).subscribe(new Observer<Integer>() {
            @Override
            public void onSubscribe(@NonNull Disposable d) {
                Log.d("main", "开始采用subscribe连接");
            }

            @Override
            public void onNext(@NonNull Integer integer) {
                Log.d("main", "next"   integer);
            }

            @Override
            public void onError(@NonNull Throwable e) {
                Log.d("main", "对Error事件作出响应");
            }

            @Override
            public void onComplete() {
                Log.d("main", "onComplete");
            }
        });
学新通

断开连接操作

        Observer<Integer> observer = new Observer<Integer>() {
            Disposable disposable;
            @Override
            public void onSubscribe(@NonNull Disposable d) {
                Log.d("main", "开始采用subscribe连接");
                disposable = d;
            }

            @Override
            public void onNext(@NonNull Integer integer) {
                Log.d("main", "next"   integer);
                disposable.dispose();
            }

            @Override
            public void onError(@NonNull Throwable e) {
                Log.d("main", "对Error事件作出响应");
            }

            @Override
            public void onComplete() {
                Log.d("main", "onComplete");
            }
        };
学新通

通过onSubscribe传入的Disposable参数进行连接关闭的操作。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfiibjk
系列文章
更多 icon
同类精品
更多 icon
继续加载