我有一个处理图像的类,这可能是一个缓慢的过程。完成工作后,该类包含有关图像的一些功能,如主色。
我还有很多其他想要知道主色的代码,当他们提出要求时,它可能已经准备就绪,也可能没有准备好。
我还没有找到一种使用RxJava2实现此功能的简单方法。有人能帮助我吗?
总而言之,如果我能创建一个方法:
,那就太好了ReplaySubject似乎有一些我正在寻找的属性,但我不确定如何正确实现它。
答案 0 :(得分:0)
“1。允许多个订阅者呼叫/订阅。
“4。订阅/稍后调用该方法的订阅者只获取缓存的值。
将replay(1)
与autoConnect()
结合使用。这将导致一个observable共享对源的单个订阅,并重放源发出的最后一个值。 autoConnect()
确保在第一个订阅者订阅时直接订阅源。
- 处理完成后,订阅者会收到结果。
醇>
使用Observable.create()
并使用ObservableEmitter
发出结果。
- 订阅者会自动取消订阅以避免内存泄漏。没有第二个事件,也没有理由继续订阅。
醇>
将Observable
转换为Single
。
以下内容应该有效:
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(final ObservableEmitter<String> e) throws Exception {
Thread.sleep(5000);
e.onNext("Test");
e.onComplete();
}
}).replay(1).autoConnect()
.firstOrError();
请注意,您应该保留对此Observable
(firstOrError()
的结果)的引用,并与订阅者共享该实例。