android– 了解数据流和多个订阅者(使用改进)

android– 了解数据流和多个订阅者(使用改进),第1张

概述假设我有两个基本上是网络调用的Observables(A&B)(使用Retrofit来提供上下文).该应用程序的当前流程如下:>A&B大约在同一时间(异步)开始.>B在用户交互时执行0次或更多次鉴于这2个observables/api调用,我有3个不同的场景我想听.>我想在ObservableA完成时立即知道>我想在O

假设我有两个基本上是网络调用的Observables(A& B)(使用Retrofit来提供上下文).

该应用程序的当前流程如下:

> A& B大约在同一时间(异步)开始.
> B在用户交互时执行0次或更多次

鉴于这2个observables / API调用,我有3个不同的场景我想听.

>我想在Observable A完成时立即知道
>我想在Observable B完成时立即知道
>我想知道两者何时完成

首先,这是RxJava的一个很好的用例吗?

我知道如何单独完成每个场景(最后使用zip),虽然我不知道如何同时完成所有这些场景.

如果我订阅Observable A,A开始.如果我订阅B,B就开始了.如果A& B在我订阅zip(a,b)之前完成,我可能会错过这个活动而从未真正看到这个完整,对吧?

任何一般指导将不胜感激.我的RxJava知识非常薄:P

解决方法:

您可以使用三种不同的可观察对象来实现这一点,每种情况都可以使用一个.

由于您必须在每个可观察对象之间共享状态,因此您必须将改进的冷可观察对象转换为热可观察对象. (有关此主题的更多信息,请参阅here)

ConnectableObservable a = service.callA().publish(); ConnectableObservable b = service.callB().publish();a.subscribe((e) -> { /* onNext */ }, (ex) -> {/* one rror */},  () -> {/* when A is completed */ });b.subscribe((e) -> { /* onNext */ }, (ex) -> {/* one rror */},  () -> {/* when B is completed */ });a.mergeWith(b).subscribe((e) -> { /* onNext */ }, (ex) -> {/* one rror */},  () -> {/* when A and B are completed */ });a.connect(); // start subscription to ab.connect(); // start subscription to b

不要在onCompleted方法之间共享对象,否则你将不得不处理并发问题.

总结

以上是内存溢出为你收集整理的android – 了解数据流和多个订阅者(使用改进)全部内容,希望文章能够帮你解决android – 了解数据流和多个订阅者(使用改进)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1107653.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存