android – RXJava – 一个接一个地运行多个observable(比如concat,但每个observable都有onCompleted)

前端之家收集整理的这篇文章主要介绍了android – RXJava – 一个接一个地运行多个observable(比如concat,但每个observable都有onCompleted)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法实现以下目标:

我有3个Observable< MyData>类型的可观察对象.我想要的是:

>运行第一个可观察的
>观察第一个观察者的onCompleted
>运行第二个observable
>观察第二个可观测量的onCompleted
>运行第三个observable
>观察第三个可观测量的onCompleted

这可以通过concat来完成,但是我只能观察到最后的onCompleted.

难看的解决方

我知道,如果我从前者的onCompleted事件中开始下一个obersvable,我就可以实现这一目标.

即使有任意数量的可观察量,还有其他方法可以达到这个目的吗?我想避免从onCompleted事件中将这一切链接在一起,因为这看起来非常难看,链接越深,它就越不清楚……

编辑 – UseCase

>首先,我想发出代表我的应用程序上次启动时加载的数据的数据(我将数据序列化为光盘)=>原因是,我想要一个非常快速的应用程序启动
>然后我想要第二次加载数据,以便在空状态下加载最新数据
>然后我想要第三次加载数据来加载最新数据的缺失深层数据

我想不断更新UI,我想知道,每个级别的数据加载完成

解决方法

我希望下面的代码有帮助.
Observable<MyData> observable1 = ...;
Observable<MyData> observable2 = ...;
Observable<MyData> observable3 = ...;

Observable
        .concat(observable1.doOnCompleted(this::onCompleteObservable1),observable2.doOnCompleted(this::onCompleteObservable2),observable3.doOnCompleted(this::onCompleteObservable3))
        .subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe( ... );

这是示例方法.

void onCompleteObservable1() {
    //do some work
}

void onCompleteObservable2() {
    //do some work
}

void onCompleteObservable3() {
    //do some work
}

猜你在找的Android相关文章