Realizar una llamada REST API de un IntentService o un AsyncTask?
Imagine un escenario típico en el que se abre una actividad, necesita llamar a una API HTTP REST para obtener algún contenido y, una vez recibida, actualiza la interfaz de usuario. Obviamente, la llamada a la API debe realizarse en un hilo independiente, pero ¿debería hacerse utilizando AsyncTask, un IntentService u otro enfoque y por qué?
- Android: El servicio de intento anidado no se inicia después de llamar a Context.startService ()
- Android SignalR debe implementarse como Service o IntentService?
- WakefulIntentService aclaraciones de implementación
- ¿Cómo mantener un IntentService funcionando incluso cuando la aplicación está cerrada?
- Android: Servicio de Intención con bibliotecas de red (Retrofit o Volley)
- La notificación creada por IntentService utiliza siempre una intención incorrecta
- Utilizar Parcelable con un objeto con Hashmap
- ¿El enfoque de diseño de la aplicación de cliente restante en google io 2010 sigue actualizado?
- Evitar que el "proceso de Android" sea un error "incorrecto"
- Cómo crear tostadas de IntentService? Se queda atascado en la pantalla
- ¿Es seguro el método onStartCommand (...) de IntentService?
- Cómo determinar si la aplicación se ejecuta desde el servicio
- ¿Qué sucede cuando mi actividad se destruye cuando estoy usando IntentService con ResultReceiver
Recomendaría la combinación de IntentService
y ResultReceiver
, como se describe en este post .
También echar 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) utilizando onRetainNonConfigurationInstance
, getLastNonConfigurationInstance
y una clase estática.
He implementado este modelo con éxito en una aplicación. Déjeme saber si usted tiene cualquier problema con los enlaces proporcionados.
Edit: He olvidado la pregunta "¿Por qué";)
AsyncTask
está estrechamente unido 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 REST API con tiempo de espera de conexión y tiempo de espera de socket establecido en 20s (debido a la red móvil pobre …). Significa que la llamada API puede durar hasta 40s. Definitivamente desea manejar una tarea tan larga en un servicio en lugar de una AsyncTask
.
- Esta actividad ya tiene una barra de acción suministrada por la decoración de la ventana (FEATURE_ACTION_BAR)
- ¿Cómo reproducir los archivos de audio directamente de la carpeta res / raw?