Asíncrono y síncrono con Retrofit en Android

publicado por: Anonymous

Me gustaría, por favor, si alguien puede explicar lo de síncrono y asíncrono en Android. No llego a entender porque una llamada asíncrona a un servidor usando Retrofit no puede devolver nada, es decir tiene que ser un metodo void, por ejemplo.

public interface GithubRepositoryService {
    @GET("/url/{owner}/{name}")
    void repository(@Path("owner") String owner, @Path("name") String name,  Callback<Repository> callback);
}

solución

Asíncrono, se refiere a que realizas la invocación de un método o tarea pero continuas con la ejecución sin esperar un resultado. Importante hacer notar que generalmente se define un “Callback” que es un método que recibirá el resultado de la respuesta.

Sincrono, la invocación de un método o tarea se realiza, pero espera el resultado, y no continua la ejecución hasta que se obtenga
un resultado.

En tu ejemplo se tiene un tipo void, ya que estas definiendo una petición Asíncrona y quien recibe la respuesta es el Callback :

public interface GithubRepositoryService {
    @GET("/repos/{owner}/{name}")
    void repository(@Path("owner") String owner, @Path("name") String name,  Callback<Repository> callback);
}

Al definir el Callback puedes recibir tu respuesta en el método success() :

    Callback callback = new Callback {

       @Override 
       public void success(Repository repository, final Response response) { 
       //* Aquí recibes tu respuesta ! ...
       ... 
       }

       @Override 
       public void failure(final RetrofitError error) { ... }

       }

    service.repository(owner, name, callback);
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *