Android进阶之路(快速进阶第二天)RxAndroid使用

基本用法:

Disposable mDisposable;

mDisposable=Observable.create(new ObservableOnSubscribe<String>() {
    @Override
    public void subscribe(@NonNull ObservableEmitter<String> e) throws Throwable {
        e.onNext("1");
        e.onNext("2");
        e.onNext("3");
        e.onNext("4");
        e.onComplete();
    }
}).subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<String>() {
            @Override
            public void onSubscribe(@NonNull Disposable d) {

            }

            @Override
            public void onNext(@NonNull String s) {
                Log.e(TAG, "onNext: " + s);
            }

            @Override
            public void onError(@NonNull Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });

 

//销毁1

Ondestory(){

mDisposable.dispos()

}

//销毁2 或

private static CompositeDisposable mRxEvent = new CompositeDisposable();

mRxEvent.add(subscribe);

mRxEvent.clear();

 

 

 

RxAndroid 观察者模式 响应式编程

'io.reactivex.rxjava3:rxandroid:3.0.0'

'io.reactivex.rxjava3:rxjava:3.0.0'

https://blog.csdn.net/weixin_42046829/article/details/104833751

 

所有类型

  1. Observable:最基本的响应类型,不支持背压
  2. Flowable:最基本的响应类型,支持背压
  3. Single:只发射一个数据的响应类型
  4. Completable:只发射一个信号的响应类型
  5. Maybe:Single和Completable的结合体

 

1.创建

创建被观察者

 Observable.create(new ObservableOnSubscribe<String>{

},//创建观察者订阅 subscribe(new Observer<String>(){}))

2切换线程

/将被观察者切换到子线程 .subscribeOn(Schedulers.io())

 //将观察者切换到主线程行 .observeOn(AndroidSchedulers.mainThread())

 

  1. Private static CompositeDisposable mRxEvent = new CompositeDisposable();
  2. Disposable subscribe = Observable.create(new ObservableOnSubscribe<String>() {
  3. mRxEvent.add(subscribe); 
  4. mRxEvent.clear();

 

 

操作符:

1.创建操作符

  1. create():创建最简单的事件流
  2. from():创建事件流,可发送不同类型的数据流
  3. just():创建事件流,可发送多个参数的数据流
  4. defer():创建事件流,可缓存可激活事件流
  5. range():创建事件流,可发送范围内的数据流
  6. interval():创建延时重复的事件流
  7. repeat():创建可重复次数的事件流
  8. timer():创建一次延时的事件流

 

  • interval():用于创建事件流,周期性重复发送
  • timer():用于创建事件流,延时发送一次
  • delay():用于事件流中,可以延时某次事件流的发送

 

2.转换操作符

  1. map():对数据流的类型进行转换
  2. flatMap():对数据流的类型进行包装成另一个数据流
  3. scan():对上一轮处理过后的数据流进行函数处理
  4. groupBy():对所有的数据流进行分组
  5. buffer():缓存发射的数据流到一定数量,随后发射出数据流集合
  6. window():缓存发射的数据流到一定数量,随后发射出新的事件流

 

3.过滤操作符

  1. debounce():事件流只发射规定范围时间内的数据项
  2. distinct():事件流只发射不重复的数据项
  3. elementAt():事件流只发射第N个数据项
  4. filter():事件流只发射符合规定函数的数据项
  5. first():事件流只发射第一个数据项
  6. last():事件流只发射最后一项数据项
  7. ignoreElements():忽略事件流的发射,只发射事件流的终止事件
  8. sample():事件流对指定的时间间隔进行数据项的采样
  9. skip():事件流忽略前N个数据项
  10. skipLast():事件流忽略后N个数据项
  11. take():事件流只发射前N个数据项
  12. takeLast():事件流只发射后N个数据项

 

4.组合操作符

  1. merge()/concat():无序/有序的合并两个数据流
  2. zip():两个数据流的数据项合并成一个数据流一同发出
  3. startWith():将待合并的数据流放在自身前面一同发出
  4. join():将数据流进行排列组合发出,不过数据流都是有时间期限的
  5. combineLatest():合并最近发射出的数据项成数据流一同发出

 

5.错误处理操作符

  1. onErrorReturn():当错误发生时,它会忽略onError的回调且会发射一个新的数据项并回调onCompleted()
  2. onErrorResumeNext():当错误发生时,它会忽略onError的回调且会发射一个新的事件流并回调onCompleted()
  3. onExceptionResumeNext():当错误发生时,如果onError收到的Throwable不是一个Exception,它会回调onError方法,且不会回调备用的事件流,如果onError收到的Throwable是一个Exception,它会回调备用的事件流进行数据的发射
  4. retry():当错误发生时,发射器会重新发射
  5. retryWhen():当错误发生时,根据Tharowble类型决定发射器是否重新发射

 

6.辅助性操作符

  1. delay():延迟事件发射的数据项
  2. do():监听事件流的生命周期
  3. materialize()/dematerialize():对事件流进行装箱/拆箱
  4. serialize():同步事件流的发射
  5. timeInterval():对事件流增加时间间隔
  6. timeout():对事件流增加限定时间
  7. timestamp():对事件流增加时间戳
  8. using():对事件流增加一次性的资源
  9. to():对数据流中的数据项进行集合的转换

 

 

7.条件和布尔操作符

  1. all():对所有数据项进行校验
  2. contains():所有数据项是否包含指定数据项
  3. amb():多个事件流中,只发射最先发出的事件流
  4. defaultIfEmpty():如果数据流为空则发射默认数据项
  5. sequenceEqual():判断两个数据流是否完全相等
  6. skipUntil():当两个事件流发射时,第一个事件流的数据项会等到第二个事件流开始发射时才进行发射
  7. skipWhile():当发射的数据流达到某种条件时,才开始发射剩余所有数据项
  8. takeUntil():当两个事件流发射时,第一个事件流的数据项会等到第二个事件流开始发射时终止发射
  9. takeWhile():当发射的数据流达到某种条件时,才停止发射剩余所有数据项

 

 

8.数学运算及聚合操作符

数学运算操作符的使用需要在gradle中添加rxjava-math的依赖

implementation 'io.reactivex:rxjava-math:1.0.0'

  • 1
  1. average():求所有数据项的平均值
  2. max/min():求所有数据项的最大或最小值
  3. sum():求所有数据项的总和
  4. reduce():对上一轮处理过后的数据流进行函数处理,只返回最后的结果
  5. collect():对上一轮处理过后的数据流进行函数处理,可改变原始的数据结构

 

 

9.连接操作符

  1. publish():将普通的事件流转换成可连接的事件流
  2. connect():将可连接的事件流进行连接并发射数据
  3. refCount():将可连接的事件流转换成普通的事件流
  4. replay():缓存可连接的事件流中的所有数据项

 

 

 

基本用法:

Disposable mDisposable;

mDisposable=Observable.create(new ObservableOnSubscribe<String>() {
    @Override
    public void subscribe(@NonNull ObservableEmitter<String> e) throws Throwable {
        e.onNext("1");
        e.onNext("2");
        e.onNext("3");
        e.onNext("4");
        e.onComplete();
    }
}).subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<String>() {
            @Override
            public void onSubscribe(@NonNull Disposable d) {

            }

            @Override
            public void onNext(@NonNull String s) {
                Log.e(TAG, "onNext: " + s);
            }

            @Override
            public void onError(@NonNull Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });

//销毁1

Ondestory(){

mDisposable.dispos()

}

//销毁2 或

private static CompositeDisposable mRxEvent = newCompositeDisposable();

mRxEvent.add(subscribe);

mRxEvent.clear();

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值