Rxjava2总结之基础认知

来源:互联网 发布:苹果电脑浏览图片软件 编辑:程序博客网 时间:2024/06/05 03:43

目录

  • 目录
  • RxJava2基础认知
    • 形式正确的有限Observable
    • Disposable类
    • CompositeDisposable类
  • 基础概念
    • Scheduler scheduler
    • Callable bufferSupplier自定义装载的容器

RxJava2基础认知

形式正确的有限Observable

调用观察者的onCompleted正好一次或者它的onError正好一次,而且此后不能再调用观察者的任何其它方法。如果onComplete或者onError走任何一个都会主动解除订阅关系.
  • 如果解除订阅关系以后在发射 onError 则会 报错;而发射onComplete则不会
  • 注意解除订阅关系 还是可以发射 onNext

Disposable类

  • dispose():主动解除订阅
  • isDisposed():查询是否解除订阅 true 代表 已经解除订阅

CompositeDisposable类

可以快速解除所有添加的Disposable类.每当我们得到一个Disposable时就调用CompositeDisposable.add()将它添加到容器中, 在退出的时候, 调用CompositeDisposable.clear() 即可快速解除.

案例代码如下:

CompositeDisposable compositeDisposable=new CompositeDisposable();Observable.create(new ObservableOnSubscribe<Integer>() {            @Override            public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {                emitter.onNext(1);                emitter.onComplete();或者 emitter.onError(new Throwable("O__O "));            }        }).subscribe(new Observer<Integer>() {            private Disposable mDisposable;            @Override            public void onSubscribe(Disposable d) {                <!-- 订阅   -->                mDisposable = d;                <!-- 添加到容器中 -->                compositeDisposable.add(d);            }            @Override            public void onNext(Integer value) {          <!-- 判断mDisposable.isDisposed()如果解除了则不需要处理 -->            }            @Override            public void onError(Throwable e) {            }            @Override            public void onComplete() {            }        });        <!-- 解除所有订阅者 -->        compositeDisposable.clear();

基础概念

Scheduler scheduler

timer() alt+点击timer可查看 关于timer的方法 可以看到时候有这个参数的变体!

这里写图片描述

Callable bufferSupplier:自定义装载的容器

Observable.range(1, 10)           //() -> new ArrayList<>() bufferSupplier           .buffer(2, 1,() -> new ArrayList<>())           .subscribe(integers -> System.out.println(integers));