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?
- Cómo compartir un objeto entre dos subprocesos (sincronización de subprocesos)?
- ¿Cómo puedo ejecutar esta clase en el hilo de interfaz de usuario?
- Android AsyncTask vs hilo + controlador vs rxjava
- ¿Por qué un AsyncTask no se inicia si se inicia / se detiene repetidamente?
- ¿Qué pasa con multithreading en Android SQLite?
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.
- La forma más fácil de usar Picasso en la notificación (icono)
- Cómo pasar en dos tipos de datos diferentes a AsyncTask, Android
- Reproductor multimedia de Android que provoca mensaje de "hilo muerto"
- Android: el diseño de inflado toma mucho tiempo
- Buenas prácticas para multi-threading
- Buenas prácticas: AsyncTask durante el cambio de orientación
- Cómo utilizar Runnable.wait () en AsyncTask? ¿Por qué el AsyncTask NO espera ...?
- Android SDK AsyncTask doInBackground no está en ejecución (subclase)
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 puedoparse
la respuesta. - Async tiene métodos como
onPreExecute
yonPostExecute
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)
- SecurityException al llamar a getLastKnownLocation
- Altura de la pestaña ActionBarSherlock no ajustable en Jelly Bean