RxJava:在订阅后阻止可观察的内容?

时间:2015-08-07 16:15:24

标签: multithreading system.reactive rx-java rx-android rx-scala

我特别需要一个可观察的。

通常,我的observable运行在不同的线程中。但是,有时他们需要在订阅过程中阻止另一个线程。一种未来的行为方式。

一个例子:

val o = Observable.create(/* computation */)
  .subscribeOn(Schedulers.newThread())
  .observeOn(/* current thread */);

val s = o.subscribe(/* subscriber */);`

突然,一个事件发生在另一个线程上,该线程表示当前线程应该等待执行订阅s。 (例如Android的onPause。)

我该怎么做?我如何等待订阅s,甚至可能检索所有结果?

(受试者?)

1 个答案:

答案 0 :(得分:0)

最简单的解决办法似乎是:

  1. 使用Observable#cache()使observable成为缓存。 (如果您的observable是值的流,请使用适当的Subject并将其用作可观察对象。)
  2. 订阅缓存的observable / subject。
  3. 当事件发生时,只需在您需要的线程上订阅缓存的observable / subject。取消订阅。