Question

Je suis en train d'explorer Rénovation+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 d'exécuteur testamentaire de service, mon code est en cours d'exécution sur le thread principal ?Dois-je faire des demandes sur le web dans un nouveau thread, donc ?

Était-ce utile?

La solution

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 tout ce dont vous avez besoin est d'ajouter un rappel.

@GET("/user/{id}/asset")
void getUserAsset(@Path("id") int id, Callback<Asset> cb);

J'espère que cela aide.

Cordialement!

Autres conseils

Rénovation méthodes peuvent être déclarés de manière synchrone ou asynchrone.

Une méthode avec un type de retour seront exécutées de manière synchrone.

@GET("/user/{id}/photo")
Photo getUserPhoto(@Path("id") int id);

D'exécution asynchrone nécessite le dernier paramètre de la méthode de être un Callback.

@GET("/user/{id}/photo")
void getUserPhoto(@Path("id") int id, Callback<Photo> cb);

Sur Android, les rappels seront exécutées sur le thread principal.Pour les applications de bureau rappels qui va se passer sur le même thread que celui qui a exécuté la requête HTTP.

Rénovation intègre également RxJava de méthodes de soutien, avec un type de retour rx.Observable

@GET("/user/{id}/photo")
Observable<Photo> getUserPhoto(@Path("id") int id);

Observables demandes sont souscrites de manière asynchrone et observées sur le même thread que celui qui a exécuté la requête HTTP.Observer, sur un thread différent (par ex.Android thread principal) appel observeOn(Scheduler) sur le revenu Observable.

Note:Le RxJava intégration est expérimental.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top