studio how consumir consume android android-asynctask intentservice

android - how - ¿Realiza una llamada REST API desde un servicio de intendencia o una prueba AsyncTask?



how to use rest api in android studio (1)

Recomendaría la combinación de IntentService y ResultReceiver , como se describe en esta publicación .

También eche un vistazo a Google iosched que implementa este modelo. La versión 2010 muestra cómo persistir el ResultReceiver través de los cambios de configuración (es decir, la rotación de la pantalla) usando onRetainNonConfigurationInstance , getLastNonConfigurationInstance y una clase estática.

Implementé este modelo exitosamente en una aplicación. Avíseme si tiene algún problema con los enlaces proporcionados.

Editar: Olvidé la pregunta "Por qué";)

AsyncTask está estrechamente vinculado a la actividad y no manejará bien los cambios de configuración. Está bien para tareas cortas dentro de la vida de la actividad (entre onResume y onPause ). Estoy usando HttpClient para mis llamadas a la API REST con el tiempo de espera de la conexión y el tiempo de espera del socket establecido en 20s (debido a una red móvil deficiente ...). Significa que la llamada API puede durar hasta 40 s. Definitivamente desea manejar una tarea tan larga en un servicio en lugar de una AsyncTask .

Imagine un escenario típico en el que se abre una actividad, necesita llamar a una API REST HTTP para obtener algo de contenido y, una vez que se recibe, actualiza la IU. Obviamente, la llamada API necesita hacerlo en un hilo separado, pero ¿debería hacerse usando AsyncTask, un servicio de intención u otro enfoque, y por qué?