Vamos a describir cómo configurar los ajustes antes de generar la versión del videojuego Unity que podrá ejecutarse…
Thread, Handler y AsyncTask ¿cuál elegir?
2.
Thread, Handler y AsyncTask ¿cuál elegir?
Continuamos hablando sobre las clases AsyncTask, Handler y Thread que nos permiten gestionar la ejecución de tareas en segundo plano en Android, abordando los dos siguientes objetivos que marcamos en el tutorial inicial:
- Cuáles son sus principales características.
- Cuándo se recomienda el uso de AsyncTask y cuando el uso de Threads.
Principales características de las clases Thread, Handler y AsyncTask
Thread
- Ejecución de tareas en paralelo o de manera concurrente.
- Los hilos de ejecución comparten el espacio de memoria.
- El conjunto de hilos en ejecución que comparten los mismos recursos es conocido como un proceso.
- Cualquier modificación de un dato en memoria, por parte de un hilo, permite el acceso al dato modificado para el resto de hilos de manera inmediata.
- Cada hilo presenta de manera propia el contador de programa, la pila de ejecución y el estado de la CPU.
- Un proceso seguirá en ejecución si al menos uno de sus hilos de ejecución sigue activo. Si un proceso finaliza, todos sus hilos de ejecución también lo harán.
Handler
- Permiten poner en cola una acción que se realiza en un subproceso distinto al suyo.
- Cada instancia de la clase Handler está asociada a un sólo hilo y a la cola de mensajes de este.
- Comunicación del hilo secundario con el hilo principal o UIThread a través de un controlador.
- Proporciona varios métodos para poner en cola un mensaje en la parte delantera o enviar al final de la cola después de un determinado tiempo ( sendMessageAtFrontOfQueue(Message msg) y sendMessageAtTime(Message msg, long uptimeMillis) ).
AsyncTask
- Proporciona un mayor control y orden en la ejecución de nuestros procesos en segundo plano.
- Marco de trabajo para operaciones no muy costosas.
- A partir de la versión Android 3.0 (Honeycomb) las tareas se ejecutan en un sólo hilo, para evitar errores derivados de ejecuciones en paralelo.
- Tarea asíncrona definida en 4 pasos ( OnPreExecute(), doInBackground(Params...), OnProgressUpdate(Progress...) y onPostExecute(Result...))
AsyncTask vs Thread
En este punto nos detendremos para comprender las situaciones en las que se recomienda el uso de una clase u otra, dependiendo de las necesidades del proyecto:
Uso de AsynTask | Uso de Threads |
|
|