Pregunta

Estoy tratando de explorar Retrofit+OkHttp en Android.Aquí un poco de código que he encontrado en internet :

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

Si yo no uso el ejecutor de servicio, será mi código se ejecuta en el hilo principal ?Debo hacer peticiones web en un nuevo hilo de ahí ?

¿Fue útil?

Solución

El método que devuelve un valor lo hace sincronamente.

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

Para hacerlo asíncrono, todo lo que necesita es agregar una devolución de llamada.

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

Espero que esto ayude.

Saludos!

Otros consejos

Retrofit métodos pueden ser declarados para sincrónicas o asincrónicas.

Un método con un tipo de retorno será ejecutado de forma sincrónica.

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

La ejecución asíncrona requiere que el último parámetro del método a ser un Callback.

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

En Android, las devoluciones de llamada se ejecuta en el hilo principal.Para las aplicaciones de escritorio devoluciones de llamada que va a suceder en el mismo hilo que ejecuta la petición HTTP.

Retrofit también integra RxJava a métodos de soporte con un tipo de retorno de rx.Observable

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

Observables de las solicitudes suscritas de forma asincrónica y la observada en el mismo hilo que ejecuta la petición HTTP.Para observar en un subproceso diferente (por ejemplo,Android hilo principal) de la llamada observeOn(Scheduler) en el devuelto Observable.

Nota:El RxJava integración es experimental.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top