Поиск…


Настроить дооснащение и RxJava

Retrofit2 поставляется с поддержкой нескольких подключаемых механизмов выполнения, один из которых - RxJava.

Чтобы использовать модификацию с RxJava, вам сначала нужно добавить адаптер Retrofit 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);
}

Вы также можете использовать Single вместо Observable .

Выполнение последовательных запросов

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