web-dev-qa-db-ja.com

Rx 2 Android API呼び出しにシングルまたはオブザーバブルのどちらが優れていますか?

rxでAPIREST呼び出しを行うためにretrofit2を使用する場合、単一または監視可能のどちらを使用するのが最善のアプローチですか?

public interface ApiService{

Single<Data> getDataFromServer();

Observable<Data> getDataFromServer();
}
18
Jose M Lechon

データフローをより正確に表現するため、Singleを使用することをお勧めします。サーバーにリクエストを送信すると、データが1回放出されます[〜 #〜]または[〜#〜]エラー:

Single:     onSubscribe (onSuccess | onError)?

Observableの場合、理論的にはデータのいくつかの放出[〜#〜]および[〜#〜]エラーが発生する可能性があります

Observable: onSubscribe onNext? (onCompleted | onError)?

ただし、 rx-Java2 を使用している場合は、Maybeの代わりに Single を使用することをお勧めします。これら2つの違いは、Maybeは、サーバーから応答を受け取ったが本文が含まれていない場合も処理することです。

Maybe:      onSubscribe (onSuccess | onCompleted | onError)?
21
Lamorak

ObservableSingleの違いはかなり意味論的です。何かSingleを宣言するとき、このオブザーバブルは一連の値ではなく、1つの値のみを生成すると言っています。

適切なセマンティックタイプを使用することは、APIを文書化するための最良の方法です。

8