Índice

Thread y Handler

Las AsyncTasks utilizan en su funcionamiento interno el principio de Thread, Handler y Message.

  • Un Thread es un contexto de ejecución en el que se ejecuta una serie de instrucciones. En Android se crea un thread con cada arranque de aplicación (el UI Thread).

  • Un Handler permite interactuar con un thread proporcionándole instrucciones (Message) que se deben ejecutar.

  • Un Message representa un comando que se debe ejecutar, se envía al thread utilizando el Handler.

En una AsyncTask, el método doInBackground crea un nuevo thread para ejecutar los tratamientos como tarea en segundo plano. La llamada al método publishProgress equivale a un mensaje enviado utilizando un Handler y permite ejecutar el método onProgressUpdate.

Para ilustrar estos ejemplos se creará un proyecto realizando el mismo tratamiento que en el ejemplo anterior (véase la sección AsyncTask) utilizando únicamente Threads, Handlers y Messages.

Comience identificando los distintos mensajes que se deben usar en la aplicación:

  • El mensaje que permite mostrar la barra de progreso.

  • El mensaje que permite actualizar el avance.

  • El mensaje que permite ocultar la barra de progreso.

private static final int MESSAGE_PRE_EXECUTE = 1;  
private static final int MESSAGE_PROGRESS_UPDATE = 2;  
private static final int MESSAGE_POST_EXECUTE = 3;

A continuación, implemente los tres métodos correspondientes a los tres mensajes definidos anteriormente.

private void downloadOnPreExecute() { 
  ...