AsyncTask o Handler- ¿Cuál es mejor para la interacción y el procesamiento de la red que consumen mucho tiempo?

Soy nuevo al desarrollo del androide. Actualmente estoy trabajando en una aplicación que tomará una consulta del usuario, enviará la consulta al servidor y recibirá una respuesta XML a cambio. Luego procesará la respuesta xML usando XMLparser, extraerá la respuesta de la respuesta XML y mostrará la respuesta al usuario. Dado que todo este procesamiento toma algún tiempo, quiero mostrar un diálogo de progreso al usuario por el tiempo de procesamiento que toma.

He pasado por algunas maneras de hacer esto como puedo utilizar AsyncTask, Handler o Runnable (java) hilos. Pero como he leído sobre todo esto, he confundido cuál usar. Por favor, dígame cuál es mejor utilizar para el escenario mencionado anteriormente. Y una forma sencilla de implementar la preferida.

Gracias de antemano.

8 Solutions collect form web for “AsyncTask o Handler- ¿Cuál es mejor para la interacción y el procesamiento de la red que consumen mucho tiempo?”

Te recomiendo que utilices AsyncTask porque es más simple que otros enfoques y se adapta a tus necesidades.

Creo que un poco estas tres entidades diferentes:

AsyncTask ejecuta un conjunto de acciones en un hilo independiente, puede mostrar progreso durante su trabajo y mostrar notificación cuando se completa la tarea.

Runnable es un comando que se puede realizar. Debería ejecutarse en un hilo separado. También debe desarrollar una lógica en este caso cómo actualizar el progreso y cómo notificar cuando la tarea está terminada.

Handler es una clase especial que puede manejar mensajes que se envían al subproceso del controlador.

Desde http://developer.android.com/reference/android/os/AsyncTask.html :

Esta clase permite realizar operaciones en segundo plano y publicar resultados en el subproceso de interfaz de usuario sin tener que manipular subprocesos y / o controladores.

AsyncTask está diseñado para un uso muy similar al tuyo.

Runnable es sólo para ejecutar un bloque de código en otro subproceso:

Representa un comando que se puede ejecutar. A menudo se utiliza para ejecutar código en un hilo diferente. (http://developer.android.com/reference/java/lang/Runnable.html)

Handler se utiliza más para Message Queue Server. Su caso no parece requerir que se envíen mensajes repetidamente.

Hay dos usos principales para un Handler: (1) programar mensajes y ejecutables que se ejecutarán como un punto en el futuro; Y (2) para enquear una acción que se realizará en un hilo diferente que el suyo propio. http://developer.android.com/reference/android/os/Handler.html

Tenga en cuenta que ni Runnable ni Handler hablan de mostrar los resultados de nuevo en el subproceso de UI. Ahí es donde AsyncTask le ayuda más que cualquiera de estos.

Puede ser mi preferencia personal – pero usaría AsyncTask en su caso. Proporciona todos los controles necesarios para iniciar la tarea, actualizar el progreso según sea necesario, etc. Tengo un requisito muy similar en mi aplicación (enviar solicitud al servidor, obtener respuesta en XML, analizar la respuesta, hacer algo con los datos) M usando AsyncTasks para este propósito.

Por lo que sé AsyncTask es la forma recomendada. Creo que es la forma más fácil de implementar y más "mejores prácticas de Android" para las tareas asíncronas.

¿Podría referirse a esta pregunta?

Así es como lo veo.

Handler es más para poner en cola muchas acciones, y da un poco más de control. Es mejor para tareas repetitivas que generalmente no están restringidas a la interfaz de usuario.

AsyncTask proporciona una forma sencilla de procesar en segundo plano, sin preocuparse mucho por las cosas de nivel inferior. Es ideal para actualizaciones de interfaz de usuario relativamente pequeñas e individuales.

IMO, debe utilizar AsyncTask . Dicho esto, es una especie de lanzamiento.

Creo que es una cuestión de auto-preferencia, pero en su caso me iría por el AsyncTask porque facilita la interacción entre el hilo de la interfaz de usuario y el hilo de fondo.

Utilizaría una combinación de AsyncTask y Handler , porque recuerda que no puedes cambiar la interfaz de usuario fuera del hilo de interfaz de usuario (en este caso no puedes intervenir y mostrar la respuesta al usuario).

Para superar esto, corrí el AsyncTask y capté el resultado con un método de devolución de llamada personalizado, que simplemente lo encapsula dentro de un Message y lo envía a mi Handler personalizado, que está dentro del subproceso de interfaz de usuario y puede mostrar en pantalla de forma segura mi resultado.

AsyncTask puede ser la opción, ya que proporciona todos los controles necesarios para iniciar la tarea asíncrona, actualizar la barra de progreso, etc.

Pero, el punto es AsyncTask es la mejor solución para el escenario. Handler o Runnable son más adecuados para casos dúplex, como aplicaciones de chat.

  • El diálogo de progreso de Android no se muestra en AsyncTask
  • Utilizar la barra de progreso circular como alarmdialog o progressdialog
  • Uso de ProgressDialog en ActionBar (Android)
  • No se puede tomar el progreso en la carga de archivos POST HTTP (Android)
  • Reexcursión de exoplayer de Android cuando se realiza la búsqueda
  • No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () dentro de AsyncTask para ProgressDialog
  • show ProgressBar o Dialog de un IntentService para el progreso de la descarga
  • Mostrar diálogo de progreso dentro de DialogFragment
  • Android: actualización de la barra de progreso de la notificación, correctamente
  • Temporizador de cuenta atrás Android La barra de progreso circular no coincide con el temporizador
  • ProgressDialog rechaza después de girar la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.