У меня есть Flowable
поток, который объединяет несколько потоков:
Flowable
.empty()
.concatWith(longOperationA())
.concatWith(longOperationB())
.onErrorResumeNext(throwable -> {
// some cleanup tasks
return Flowable.error(throwable);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(mySubscriber);
И longOperationA()
, и longOperationB()
испускают предметы.
Относительно того, какие обстоятельства возникают (возникает ошибка или mySubscriber
получает
Я хочу, чтобы мой поток действовал по-другому. Случай ошибки покрыт
обратным вызовом onErrorResumeNext()
, но не в случае, когда mySubscriber
становится распоряжаться.
Как я могу изменить свой поток, чтобы выполнить другую задачу, когда абонент удален?
Чтобы получить больше информации об этом, я попытался doOnCancel()
:
Flowable
.concatWith(longOperationA())
.concatWith(longOperationB())
.doOnCancel(() -> {
// some cleanup tasks
})
.onErrorResumeNext(throwable -> { ...
Однако doOnCancel()
вызывается не только тогда, когда mySubscription
становится ликвидным,
но также когда longOperationA()
(и `longOperationB () соответственно) завершены.
Есть ли другой способ, чтобы мой поток реагировал на событие dispose
?