rx-java
Retrofit e RxJava
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*/);