J'essaie d'explorer Retrofit + OkHttp sur Android. Voici un code que j'ai trouvé en ligne:
RestAdapter restAdapter = new RestAdapter.Builder().setExecutors(executor, executor)
.setClient(new OkClient(okHttpClient))
.setServer("blah").toString())
.build();
Si je n'utilise pas le service exécuteur, mon code s'exécutera-t-il sur le thread principal? Dois-je donc faire des requêtes Web dans un nouveau fil?
La méthode qui renvoie une valeur le fait de manière synchrone.
@GET("/user/{id}/asset")
Asset getUserAsset(@Path("id") int id);
Pour le faire Asynchrone, il vous suffit d'ajouter un rappel.
@GET("/user/{id}/asset")
void getUserAsset(@Path("id") int id, Callback<Asset> cb);
J'espère que cela t'aides.
Cordialement!
Les méthodes de modification peuvent être déclarées pour une exécution synchrone ou asynchrone.
Une méthode avec un type de retour sera exécutée de manière synchrone.
@GET("/user/{id}/photo")
Photo getUserPhoto(@Path("id") int id);
L'exécution asynchrone requiert que le dernier paramètre de la méthode soit un Callback
.
@GET("/user/{id}/photo")
void getUserPhoto(@Path("id") int id, Callback<Photo> cb);
Sur Android, les rappels seront exécutés sur le thread principal. Pour les applications de bureau, les rappels auront lieu sur le même thread qui a exécuté la requête HTTP.
Retrofit intègre également RxJava pour prendre en charge les méthodes avec un type de retour de rx.Observable
@GET("/user/{id}/photo")
Observable<Photo> getUserPhoto(@Path("id") int id);
Les requêtes observables sont abonnées de manière asynchrone et observées sur le même thread qui a exécuté la requête HTTP. Pour observer sur un autre thread (par exemple, le thread principal d'Android), appelez observeOn(Scheduler)
sur le Observable
retourné.
Remarque: L'intégration RxJava est expérimentale.