[英]A single async event with many subscribers in RxJava2
我有一个处理图像的类,这可能是一个缓慢的过程。 完成工作后,该类包含有关图像的一些功能,如主色。
我还有许多其他想要知道主色的代码,当它们提出要求时,它可能已经准备就绪,也可能没有准备好。
我还没有找到一种使用RxJava2实现它的简单方法。 有人能帮我吗?
总而言之,如果我能创建一个方法,那将是很好的:
ReplaySubject似乎有一些我正在寻找的属性,但我不确定如何正确实现它。
“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()
的结果)并与订阅者共享该实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.