如果我的订阅被处置,如何让我的rx流作出反应?

时间:2019-03-29 17:15:34

标签: java android rx-java2

我有一个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事件做出反应吗?

1 个答案:

答案 0 :(得分:1)