rxJava在取消订阅时停止观察

时间:2016-07-21 21:31:19

标签: rx-java

我有一个可观察的冷却,当在计算调度程序上订阅时会生成很多项目并发送给另一个对它们做更重的工作的o。

问题是当我取消订阅时,我想要停止所有可观察链。

有任何运营商吗?我试图检查我是否有一个嫌疑人,但此时我的大部分物品都被发射了。

1 个答案:

答案 0 :(得分:1)

创建一个可以执行繁重工作并可以检查订阅的observable:

obs //emits stuff fast
  .flatMap(x -> 
    Observable.create(
        sub -> {
          //frequently check subscription status
          while (!sub.isUnsubscribed()) {
            // do some work
            if (finished) break;
          }
          if (!sub.isUnsubscribed()) {
            sub.onNext(result);
            sub.onCompleted();
          }
        }))
      //ensure backpressure compliant
      .onBackpressureBuffer() 
    ).subscribe(subscriber);