RxJava:订阅后阻塞可观察对象



我对一个可观察对象有一个特殊的需求。

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

一个例子:

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

突然,另一个线程上发生了一个事件,通知当前线程应该等待订阅s的执行。(Android的onPause就是一个例子。)

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

(科目?)

最简单的解决方案似乎是:

  1. 使用Observable#cache()将观察对象设置为缓存观察对象。(如果你的可观察对象是一个值流,使用一个合适的Subject作为可观察对象。)
  2. 订阅缓存的observable/subject。
  3. 当事件发生时,只需在你需要的线程上订阅缓存的observable/subject。根据需要取消订阅。

相关内容

  • 没有找到相关文章

最新更新