Ricerca…


Imposta Retrofit e RxJava

Retrofit2 include il supporto per molteplici meccanismi di esecuzione pluggable, uno dei quali è RxJava.

Per utilizzare il retrofit con RxJava è necessario prima aggiungere l'adattatore Retrofit RxJava al progetto:

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

quindi è necessario aggiungere l'adattatore durante la creazione dell'istanza di modifica successiva:

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

Nella tua interfaccia quando definisci l'API il tipo di Observable dovrebbe essere Observable ad esempio:

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

Puoi anche usare Single invece di Observable .

Fare richieste seriali

RxJava è utile quando si effettua una richiesta seriale. Se si desidera utilizzare il risultato di una richiesta per flatMap un altro, è possibile utilizzare l'operatore flatMap :

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

Fare richieste parallele

Puoi usare l'operatore zip per fare richieste in parallelo e combinare i risultati ad esempio:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow