Índice

Programación concurrente

Por defecto, un proceso solo comprende un thread, el thread principal. Todos los componentes de la aplicación se ejecutan en este thread. Para mejorar la experiencia de usuario, Android considera que una aplicación está bloqueada cuando no responde tras diez segundos. El usuario puede destruirla.

Para evitar tal bloqueo de la aplicación, cualquier procesamiento largo, como, por ejemplo, una descarga web o un cálculo intensivo, deben realizarse en un thread secundario dedicado, liberando al thread principal. Este último puede entonces dedicarse al funcionamiento global de la aplicación y a su representación gráfica, tarea que se realiza de forma obligatoria en el thread principal.

Es posible crear tantos threads secundarios como se desee. Se recomienda encarecidamente crear threads antes que procesos, pues estos últimos consumen más recursos.

Si bien no es obligatorio, en muchos casos puede ser oportuno crear servicios para ejecutar los threads secundarios. En efecto, llegado el caso, el sistema matará de manera prioritaria aquellos procesos que no muestren nada al usuario o los receptores de eventos sin actividad antes que los servicios. La clase IntentService puede ser otra gran idea en este sentido. En efecto, permite crear rápidamente servicios que integran un thread secundario y gestionarlos fácilmente. Es, por tanto, una solución suplementaria que vale la pena tener en cuenta, además de las que se detallan en este capítulo. ...