Hilo
Un hilo es una unidad concurrente de ejecución. Tiene su propia pila de llamadas. Hay dos métodos para implementar subprocesos en las aplicaciones.
Uno está proporcionando una nueva clase que extiende Thread y anula su método run (). El otro es proporcionar una nueva instancia de Thread con un objeto Runnable durante su creación. Un subproceso se puede ejecutar llamando a su método de "inicio". Puede establecer la "Prioridad" de un hilo llamando a su método "setPriority (int)".
Se puede usar un hilo si no tiene ningún efecto en la parte de la interfaz de usuario. Por ejemplo, está llamando a algún servicio web o descargando algunos datos, y después de la descarga, los está mostrando en su pantalla. Luego, debe usar un controlador con un subproceso y esto hará que su aplicación sea complicada para manejar todas las respuestas de los subprocesos.
Un controlador le permite enviar y procesar mensajes y objetos ejecutables asociados con MessageQueue de un hilo. Cada hilo tiene cada cola de mensajes. (Como una lista de tareas pendientes), y el hilo tomará cada mensaje y lo procesará hasta que la cola de mensajes esté vacía. Entonces, cuando el controlador se comunica, solo envía un mensaje al hilo del llamador y esperará a que se procese.
Si utiliza subprocesos Java, debe manejar los siguientes requisitos en su propio código:
Sincronización con el hilo principal si publica resultados en la interfaz de usuario No hay valor predeterminado para cancelar el hilo No hay agrupación de hilos predeterminada No hay valor predeterminado para manejar los cambios de configuración en Android
AsyncTask
AsyncTask permite el uso correcto y fácil del hilo de la interfaz de usuario. Esta clase permite realizar operaciones en segundo plano y publicar resultados en el subproceso de la interfaz de usuario sin tener que manipular subprocesos y / o controladores. Una tarea asincrónica se define mediante un cálculo que se ejecuta en un subproceso en segundo plano y cuyo resultado se publica en el subproceso de la interfaz de usuario.
AsyncTask pasará por las siguientes 4 etapas:
onPreExecute ()
Se invoca en el subproceso de la interfaz de usuario antes de ejecutar la tarea
doInbackground (Parámetros ..)
Se invoca en el subproceso de fondo inmediatamente después de que onPreExecute () termine de ejecutarse.
onProgressUpdate (Progreso ..)
Se invoca en el subproceso de la interfaz de usuario después de una llamada para publicar Progress (Progress ...).
onPostExecute (Resultado)
Se invoca en el subproceso de la interfaz de usuario después de que finaliza el cálculo en segundo plano.
¿Por qué deberías usar AsyncTask?
Fácil de usar para un subproceso de interfaz de usuario. (Por lo tanto, úselo cuando el hilo de la persona que llama es un hilo de la interfaz de usuario).
No es necesario manipular manipuladores.