Conexión a un servicio web desde android – AsyncTask o Service?

Estoy escribiendo una aplicación para Android que se conectará a un servicio web REST / JSON. Los usuarios estarán recuperando información, cargando comentarios, descargando y subiendo imágenes, etc.

Sé que no debería mantener toda esta comunicación de red en el hilo de actividad / interfaz de usuario, ya que causará ANR. Lo que estoy confundido es si debo usar un AsyncTask o un servicio con "manual" de subprocesos para lograr esto;

Con un servicio, simplemente tendría un método público para cada método en la API del webservice. Entonces implementaría el enhebrado dentro de cada uno de estos métodos.

Si utilizaba un AsyncTask, crearía una clase auxiliar que definiera AsyncTasks para cada método en la API del webservice.

¿Qué método se prefiere? La interacción con el servicio web sólo ocurrirá mientras el usuario esté en la Actividad. Una vez que cambian a otra aplicación, o salir del programa, no hay necesidad de comunicación con el servicio web.

Te recomiendo que vayas a la solución AsyncTask. Es una forma fácil y sencilla de ejecutar peticiones o cualquier otra tarea de fondo del subproceso de la interfaz de usuario.

También es fácil de implementar, por ejemplo, onProgressUpdate si necesita mostrar una barra de progreso de algún tipo mientras ejecuta sus peticiones.

Recomiendo IntentService , no es mucho más complejo de implementar y es definitivamente más robusto porque no está tan estrechamente vinculado en ActivityLifecycle (en particular a onConfigurationChange() )

Esta biblioteca proporciona un contenedor asíncrono a Apache httpclient disponible en Android.

http://loopj.com/android-async-http/

  • Giro a la izquierda / derecha de Android en la actividad de WebView (haciendo clic en vínculos y desplazamiento vertical)
  • Configuración de la aplicación no: esta aplicación sigue en modo de desarrollo
  • Android habilita el botón Atrás en la vista web
  • ¿Cómo obtener datos completos de cookies desde un WebView de Android?
  • Cómo seleccionar todo el contenido de WebView mediante programación?
  • Restauración del estado de vista web que contiene HTML generado dinámicamente
  • ¿Cómo se puede pasar JSON a AngularJS en la vista web de Android?
  • Servicio Web SocketTimeOutException provoca inconsistencia de base de datos
  • ¿Cómo puedo inhabilitar todos los eventos táctiles en todos los niños de un ViewGroup?
  • ¿Cómo escondo un WebView?
  • Asegurar las APIs de webservice RESTful de Spring de acceso no autorizado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.