Rx 2 Android 对于 api 调用,Single 或 Observable 哪个更好?

Rx 2 Android what is better Single or Observable for api calls?

当我们使用 retrofit2 对 Rx 进行 API rest 调用时,最好的使用方法是什么,Single 还是 Observable?

public interface ApiService{

Single<Data> getDataFromServer();

Observable<Data> getDataFromServer();
}

ObservableSingle 之间的区别是语义上的。当你声明一些东西时 Single 你是说这个 observable 只会产生一个值,而不是一系列值。

使用正确的语义类型是记录您的 API 的最佳方式。

我建议使用 Single,因为它更准确地表示数据流:您向服务器发出请求,然后您会收到一个数据发射 一个错误:

Single:     onSubscribe (onSuccess | onError)?

对于一个 Observable 理论上你可以获得多个数据排放 AND 一个错误

Observable: onSubscribe onNext? (onCompleted | onError)?

但是,如果您使用 , I'd suggest using a Maybe 而不是 Single。两者之间的区别在于 Maybe 还处理从服务器获得响应但不包含正文的情况。

Maybe:      onSubscribe (onSuccess | onCompleted | onError)?