rx-java
レトロフィットとRxJava
サーチ…
レトロフィットとRxJavaをセットアップする
Retrofit2は複数のプラガブル実行メカニズムをサポートしています。その1つはRxJavaです。
RxJavaでレトロフィットを使用するには、まずレトロフィットRxJavaアダプタをプロジェクトに追加する必要があります。
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
レトロフィットインスタンスを構築するときにアダプタを追加する必要があります。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com")
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
APIを定義する際のインタフェースでは、戻り値の型はObservableなければなりません。例:
public interface GitHubService {
@GET("users/{user}/repos")
Observable<List<Repo>> listRepos(@Path("user") String user);
}
ObservableではなくSingleを使用することもできます。
シリアルリクエストの作成
RxJavaはシリアルリクエストを行うときに便利です。リクエストの結果を使用して別のリクエストを作成する場合は、 flatMap演算子を使用できます。
api.getRepo(repoId).flatMap(repo -> api.getUser(repo.getOwnerId())
.subscribe(/*do something with the result*/);
パラレルリクエストの作成
zip演算子を使用して並行してリクエストし、結果を結合することができます。例:
Observable.zip(api.getRepo(repoId1), api.getRepo(repoId2), (repo1, repo2) ->
{
//here you can combine the results
}).subscribe(/*do something with the result*/);
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow