Android 组合2个观察值,并从第一个完成的观察值中获得输出

Android 组合2个观察值,并从第一个完成的观察值中获得输出,android,rx-java,Android,Rx Java,我有一个等待推送通知的订阅,还有一个正在轮询服务器以获得响应。我想同时启动这两个可观察对象,并从第一个完成的对象返回数据。操作员在这里使用什么?因为您希望第一个要完成的数据,所以必须将数据放在某个地方,直到到达终端事件,方法是将每个数据收集到自己的列表中,并使用amb,首先选择发出事件信号的源(收集的列表)。然后可以将列表展开回各个项目 Observable<A> source1 = ... Observable<A> source2 = ... Observable.

我有一个等待推送通知的订阅,还有一个正在轮询服务器以获得响应。我想同时启动这两个可观察对象,并从第一个完成的对象返回数据。操作员在这里使用什么?

因为您希望第一个要完成的数据,所以必须将数据放在某个地方,直到到达终端事件,方法是将每个数据收集到自己的列表中,并使用
amb
,首先选择发出事件信号的源(收集的列表)。然后可以将列表展开回各个项目

Observable<A> source1 = ...
Observable<A> source2 = ...

Observable.amb(source1.toList(), source2.toList())
.flatMapIterable(list -> list)
.subscribe(...);
Observable source1=。。。
可观测源2=。。。
Observable.amb(source1.toList(),source2.toList())
.flatMapIterable(列表->列表)
.认购(……);

您要找的操作员是。当然,您必须首先合并观测值(通过使用mergeDelayError,或者可能更好,因此如果其中只有一个失败,您仍然会得到第一个结果有效的观测值)

应该是这样的:

Observable.mergeDelayError(pushObservable, pullObservable)
        .first()
        .subscribe(data->...);