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é?

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 .

  • ¿Necesita ayuda para descargar imágenes de fondo en Android?
  • IntentService onHandleIntent () sigue funcionando después de onDestroy () despedido
  • Async tarea no funciona correctamente (doInBackground no se ejecuta) cuando el servicio se ejecuta en segundo plano, Android
  • El oyente de ubicación funciona desde un servicio pero no es un servicio de IntentService
  • ¿Cómo descargar el archivo con el servicio en android?
  • Deteniendo un IntentService
  • Cómo utilizar Notification.deleteIntent
  • ¿AlarmManager requiere que PendingIntent sea del tipo BroadcastReceiver?
  • Enviar las actualizaciones de la ubicación a IntentService
  • ¿Cuándo anular el registro de BroadcastReceiver? En onPause (), onDestroy (), o onStop ()?
  • ¿Cómo forzar a un IntentService a detenerse inmediatamente con un botón de cancelación de una actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.