对于api调用,Rx 2 Android有什么更好的Single或Observable?

时间:2017-02-01 14:36:57

标签: android rx-java retrofit2 rx-android

当我们使用retrofit2与Rx进行API休息调用时,使用的最佳方法是Single还是Observable?

public interface ApiService{

Single<Data> getDataFromServer();

Observable<Data> getDataFromServer();
}

2 个答案:

答案 0 :(得分:16)

我建议使用Single,因为它更准确地表示数据流:您向服务器发出请求,并且您获得一次数据 OR 错误:

Single:     onSubscribe (onSuccess | onError)?

对于Observable,您理论上可以获得多次数据排放 AND 错误

Observable: onSubscribe onNext? (onCompleted | onError)?

但是,如果您使用,我建议使用Maybe代替Single。这两者之间的区别在于Maybe处理从服务器获得响应但不包含正文的情况。

Maybe:      onSubscribe (onSuccess | onCompleted | onError)?

答案 1 :(得分:6)

ObservableSingle之间的区别是相当语义的。当你宣布某事Single时,你说这个可观测量只会产生一个值而不是一系列值。

使用适当的语义类型是记录API的最佳方式。