Suche…


Richten Sie Retrofit und RxJava ein

Retrofit2 unterstützt mehrere steckbare Ausführungsmechanismen. Einer davon ist RxJava.

Um Retrofit mit RxJava verwenden zu können, müssen Sie zunächst den Retrofit RxJava-Adapter zu Ihrem Projekt hinzufügen:

compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'

Dann müssen Sie den Adapter hinzufügen, wenn Sie Ihre Retrofit-Instanz erstellen:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.example.com")
    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
    .build();

In Ihrer Schnittstelle , wenn Sie definieren sollten die API der Rückgabetyp sein Observable zB:

public interface GitHubService {
  @GET("users/{user}/repos")
  Observable<List<Repo>> listRepos(@Path("user") String user);
}

Sie können auch Single anstelle von Observable .

Serienanfragen stellen

RxJava ist praktisch, wenn Sie eine Serienanforderung durchführen. Wenn Sie das Ergebnis einer Anfrage für eine andere verwenden flatMap können Sie den flatMap Operator verwenden:

api.getRepo(repoId).flatMap(repo -> api.getUser(repo.getOwnerId())
    .subscribe(/*do something with the result*/);

Parallele Anfragen stellen

Sie können den zip Operator verwenden, um eine Anfrage parallel zu stellen und die Ergebnisse zu kombinieren, zB:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow