我有一个这样运行的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);
但是由于某种原因,它并没有解雇链条。