Domanda

Sto cercando di esplorare retrofit + okhttp su Android.Ecco alcuni codici che ho trovato online:

RestAdapter restAdapter = new RestAdapter.Builder().setExecutors(executor, executor)
.setClient(new OkClient(okHttpClient))
.setServer("blah").toString())
.build();
.

Se non utilizzo il servizio di esecutore, il mio codice sarà in esecuzione sul thread principale?Dovrei creare richieste web in un nuovo thread, quindi?

È stato utile?

Soluzione

Il metodo che restituisce un valore è sincronizzato.

@GET("/user/{id}/asset")
Asset getUserAsset(@Path("id") int id);
.

Per farlo Asincrono tutto ciò di cui hai bisogno è aggiungere un callback.

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

Spero che questo aiuti.

Saluti!

Altri suggerimenti

I metodi di retrofit possono essere dichiarati per l'esecuzione sincrona o asincrona.

Un metodo con un tipo di ritorno verrà eseguito sincrono in modo sincrono.

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

L'esecuzione asincrona è necessario che l'ultimo parametro del metodo sia un Callback.

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

su Android, i callback saranno eseguiti sul thread principale.Per applicazioni desktop, i callback si verificheranno sullo stesso thread che eseguirà la richiesta HTTP.

Retrofit integra anche RXJAVA per supportare i metodi con un tipo di ritorno di rx.Observable

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

Le richieste osservabili sono sottoscritte asincrono e osservate sullo stesso thread che ha eseguito la richiesta HTTP.Per osservare su un filo diverso (E.G. Thread principale di Android) Chiamare observeOn(Scheduler) sul Observable restituito.

Nota: l'integrazione RXJAVA è sperimentale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top