Android RXJava在完成其他任务时创建一个可观察的

Android RXJava在完成其他任务时创建一个可观察的,android,rxjs,rx-java,Android,Rxjs,Rx Java,嗨,我已经为此挣扎了一段时间了。感谢您的帮助 我有一个要求,在完成另一个观察后运行一个观察。例如,下面的代码创建了一个从输入值到值+10的可观察值 Observable<ColoredIntegerModel> getSequenceObservable(int value, int delay, int color) { return Observable.range(value,10) .map(i -> {

嗨,我已经为此挣扎了一段时间了。感谢您的帮助

我有一个要求,在完成另一个观察后运行一个观察。例如,下面的代码创建了一个从输入值到值+10的可观察值

 Observable<ColoredIntegerModel> getSequenceObservable(int value, int delay, int color) {
    return Observable.range(value,10)
            .map(i -> {
                Log.d(TAG, "Value " + i
                        + " evaluating on " + Thread.currentThread().getName()
                        + " emitting item at " + System.currentTimeMillis());
                try {
                    Thread.sleep(delay);
                } catch (InterruptedException e) {

                }
                return new ColoredIntegerModel(i, color);
            });
}
我创建了两个可观察的对象,如下所示

Observable<ColoredIntegerModel> observable1 = getSequenceObservable(1, 1000, Color.BLUE);

Observable<ColoredIntegerModel> observable11 = getSequenceObservable(11, 1000, Color.RED);

 mDisposable =
            observable1.concatWith(observable11)
            .doOnDispose(() -> {Log.d(TAG, "observable disposed");})
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .repeat(2)
            .subscribe((m) -> {
                Utils.appendColoredText(mResultTextView, "Adding item "
                        + m.getValue().toString() + "\n", m.getColor());
            });
Observable-Observable 1=getSequenceObservable(11000,颜色.蓝色);
Observable observable11=getSequenceObservable(11,1000,颜色为红色);
可计量=
可观察到的1.concatWith(可观察到的11)
.doOnDispose(()->{Log.d(标记,“可观察到的”);})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.重复(2)
.认购((m)->{
Utils.appendColoredText(mResultTextView,“添加项”
+m.getValue().toString()+“\n”,m.getColor());
});
上面的代码打印1..10(蓝色,每个项目延迟1s)和11..20(红色)

到目前为止还不错


但我的要求是,只有在第一个观测完成之后,才能创建第二个观测。事实上,它可以是一个可观察的数组,其中n+1个可观察的只有在第n个完成后才被创建。每个可观察对象可以发射多个项目。是否有运营商可以做到这一点

我不知道我是否理解正确,但如果您想在订阅时创建
可观察对象
,您需要操作员

您可以从上一个的doOnCompleted()开始下一个可观察对象

Observable<MyData> observable1 = ...;
Observable<MyData> observable2 = ...;
Observable<MyData> observable3 = ...;

Observable
       .concat(observable1.doOnCompleted(this::onCompleteObservable1),
            observable2.doOnCompleted(this::onCompleteObservable2),
            observable3.doOnCompleted(this::onCompleteObservable3))
            ...
            ...
可观察1=。。。;
可观测2=。。。;
可观测的可观测的3=。。。;
可观察
.concat(observed1.doOnCompleted)(此::oncompleteeobserved1),
observable2.doOnCompleted(此::onCompleteObservable2),
observable3.doOnCompleted(this::onCompleteObservable3))
...
...

希望对您有所帮助。

谢谢。我正在找延时接线员。它间接地解决了我的问题。
Observable<MyData> observable1 = ...;
Observable<MyData> observable2 = ...;
Observable<MyData> observable3 = ...;

Observable
       .concat(observable1.doOnCompleted(this::onCompleteObservable1),
            observable2.doOnCompleted(this::onCompleteObservable2),
            observable3.doOnCompleted(this::onCompleteObservable3))
            ...
            ...