Diferencia real entre AsyncTask y Thread

He estado leyendo documentación de Android ( AsyncTask , Thread ) y tutorial de vogella sobre este asunto, pero todavía tengo dudas.

Por ejemplo, deseo enviar un mensaje desde una aplicación de Android a un servidor. Y me gustaría procesar su respuesta. ¿Qué debo usar?

He visto ejemplos donde crean un nuevo hilo para no bloquear la interfaz de usuario, pero de esta manera no tenemos el progreso del proceso, también tenemos que procesar la respuesta dentro del hilo porque el método run () no devuelve nada.

AsyncTask parece una mejor opción que Thread, pero no sé si hay algunas consecuencias sobre cómo Android ejecuta un AsyncTask o un Thread.

Por favor, lea este blog

http://crazyaboutandroid.blogspot.in/2011/12/difference-between-android.html

Y los detalles son:

Diferencia entre Android Service, Thread, IntentService y AsyncTask

Cuándo usar ?

Servicio

Task with no UI, but shouldn't be too long. Use threads within service for long tasks. 

Hilo

 - Long task in general. - For tasks in parallel use Multiple threads (traditional mechanisms) 

AsyncTask

 - Small task having to communicate with main thread. - For tasks in parallel use multiple instances OR Executor 

Todas las otras respuestas aquí no son completas, hay una gran diferencia entre AsyncTask y Thread, es decir

El hilo puede ser activado desde cualquier hilo, principal / UI o fondo; Pero AsyncTask debe activarse desde el subproceso principal.

También en api inferior de android (no está seguro, puede ser api nivel <11), una instancia de AsyncTask se puede ejecutar sólo una vez.

Para obtener más información, lea Diferencia entre Android Service, Thread, IntentService y AsyncTask

En general

Hilo

  • Larga tarea en general.

  • Para tareas en uso paralelo Múltiples hilos (mecanismos tradicionales)

AsyncTask

  • Pequeña tarea tener que comunicarse con el hilo principal.

  • Para tareas en paralelo use múltiples instancias O Ejecutor

En general utilizando de 2 estas características son equivalentes, pero AsyncTask es más simple en términos de integración con GUI

  • Yo preferiría usar Async Task, ya que le permitirá saber cuando el background process se inicia y más y cuándo puedo parse la respuesta.
  • Async tiene métodos como onPreExecute y onPostExecute que nos permitirán hacer tareas antes y después de llamar a las tareas de fondo.

AsyncTask enables proper and easy use of the UI thread. – de Desarrollador .

La cosa es – AsyncTask es un tipo especial de Thread – que es un hilo GUI, que funciona en segundo plano y también vamos a hacer algo con la GUI – es básicamente "pre-programado" para usted con funciones onPreExecute(), do inBackground(), onPostExecute() .

Para que Thread funcione de esa manera, debes escribir un montón de código.

AsyncTask permite el uso adecuado y sencillo del subproceso de interfaz de usuario. 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.

Puede controlar sus propias funciones

(Params … params), onCancelled (), onPostExecute (Resultado del resultado), onPreExecute (), nProgressUpdate (Progress … values), publishProgress (Progress … values)

  • Qué cosas se ejecutan en el hilo principal de la interfaz de usuario al abrir una aplicación para Android
  • Hilos de aplicación vs Hilos de servicio
  • Múltiples temas en la actividad / servicio de Android
  • AsyncTask hilo sigue allí después de ejecutar, ¿es normal?
  • ¿Cuál es la forma correcta de tratar con multithreading y Realm?
  • Threading de ContentProvider
  • Hace TimerTask ejecutando en nuevo hilo
  • Uso de la concurrencia de Android
  • Ejecutar una tarea larga en glThread sin bloquear el hilo de la interfaz de usuario en Android
  • Cámara Android: ¿Hilos? Que debe hacer lo que
  • Cómo cancelar AsyncTask cuando la actividad termina?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.