如何阻止Flowables的运行列表,直到未完成之前

时间:2019-05-31 12:17:18

标签: java android rx-java reactivex

我有一个这样运行的Flowable列表:

Flowable.concatArray(Tasks.values().toArray(new Flowable[]{}))
                    .subscribeOn(Schedulers.single())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe();

我需要每60秒运行一次,但是不确定如何检查此链是否以前已经运行和完成。我可以使用什么机制来做到这一点?我使用此代码按顺序运行了一次(因此Schedulers.single()),但是不确定如何检查链条是否已完成运行。

想到的一种方法是这样的:

private Subject<Integer> TasksStatus = PublishSubject.create();

Observable.combineLatest(Observable.interval(30, TimeUnit.SECONDS), TasksStatus, (TaskPeriod, Status) -> new Object[]{TaskPeriod, Status}).subscribe(
            Parameters -> {
                int Status = (int) Parameters[1];
                if (Status == 2) {
                    TasksStatus.onNext(1);
                    Flowable.concatArray(Tasks.values().toArray(new Flowable[]{}))
                            .subscribeOn(Schedulers.single()).doOnComplete(() -> {
                        Log.d(getClass().getSimpleName(), "Chain has finished");
                        TasksStatus.onNext(2);
                    }).subscribe();
                }
            });

    // Set it as completed at the beginning
    TasksStatus.onNext(2);

但是由于某种原因,它并没有解雇链条。

0 个答案:

没有答案