Rxjava2

倒计时 (另一种实现方式CountDownTimer)

//参数说明 0 开始时间  10 总的时间  0 从某个时间开始 1 每次倒计时多少  TimeUnit.SECOND 时间单位 (可以设置其他的一般用秒)

Flowable.intervalRange(0, 10, 0, 1, TimeUnit.SECONDS).observeOn(AndroidSchedulers.mainThread()).doOnNext(new Consumer() {

@Override

    public void accept(Long aLong)throws Exception {

   //目前时间

    }

}).doOnComplete(new Action() {

@Override

    public void run()throws Exception {

    //结束

    }

})

.subscribeOn(Schedulers.io())

.subscribe();




 RxJava 三部曲第一步:初始化 Observable第二步:初始化 Observer第三步:建立订阅关系

Observable.create(new ObservableOnSubscribe() {//初始化被观察者 subscribeOn 设置被观察者线程

@Override

    public void subscribe(ObservableEmitter e)throws Exception {

        Log.e("Observable", "Observable thread is : " + Thread.currentThread().getName());

        e.onNext(true);

    }

})

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

//.subscribeWith(new Observer() {//有返回对象 new ResourceObserver 返回 Disposable     new Observer 返回 Observer

.subscribe(new Observer() {//无返回对象 subscribe订阅观察者 new Observer初始化观察者  observeOn 设置观察者线程 

          @Override

            public void onSubscribe(Disposable d) {

     Log.e("Observable1", "Observable thread is : " + Thread.currentThread().getName());

            }

@Override

            public void onNext(Boolean aBoolean) {

Log.e("Observable2", "Observable thread is : " + Thread.currentThread().getName());

            }

@Override

            public void onError(Throwable e) {

}

@Override

            public void onComplete() {

}

});



Observable 跟Flowable

相同点:基本使用无差别。

不同点::即被观察者和观察者处于不同的线程中 ,Observable  如果被观察者发送的频率过高,导致订阅者不能即时处理。但是缓存太多容易造成OOM。即背压

解决方式:Flowable  配置 BackpressureStrategy 



 操作数据库操作 Flowable 跟  Single 

没有数据返回:Single将触发onError(EmptyResultSetException.class),Flowable不发射数据,既没有onNext,也没有onError.

有数据返回:Single将触发onSuccess Flowable将触发onNext

数据有更新:当Single.onComplete被调用后user有更新没有回调,数据有更新,Flowable对象都会自动发出,允许你用最新的数据更新UI


Completable : 成功回调方式

public void addDisposable(Completable completable, Action action) {

if (compositeDisposable ==null) {

compositeDisposable =new CompositeDisposable();

    }

compositeDisposable.add(completable

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(action));

}

Single : 成功、错误回调方式,支持只定义一个 Consumer 

public void addDisposable(Single single, Consumer consumer, Consumer consumer1) {

if (compositeDisposable ==null) {

compositeDisposable =new CompositeDisposable();

    }

compositeDisposable.add(single.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(consumer, consumer1));

}

Flowable: 成功、错误回调方式 支持只定义一个 Consumer  

public void addDisposable(Flowable flowable, Consumer consumer, Consumer consumer1) {

if (compositeDisposable ==null) {

compositeDisposable =new CompositeDisposable();

    }

compositeDisposable.add(flowable.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(consumer, consumer1));

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容