NOVEDADES IMPORTANTES

Acceso a todos los contenidos

Hace unos meses decidimos suspender nuestra actividad de formación online en Digital Learning SL (propietaria de esta web).

Desde entones hemos mantenido operativos nuestra plataforma de teleformación y webs de contenidos Academia Android y Digital Learning, habilitando un acceso libre y gratuito a todos estos recursos, incluyendo cursos y contenidos Premium que antes requerían un registro y pago previo, lo que ha propiciado un volumen de visitas constante de usuarios que consultan esta formación.

Venta-traspaso de los contenidos

Creemos que estas webs por sus contenidos, posicionamiento SEO y atracción de tráfico (junto a sus cuentas en redes sociales asociadas, incluyendo Twitter y Facebook de nuestro curso de Community Manager) pueden ser una oportunidad para emprendedores o compañías de diversos ámbitos (formación, marketing y publicación online, desarrollo software,…) que quieran:

  • Captar usuarios, alumnos o clientes para sus proyectos, productos y servicios.
  • Comercializar los contenidos bajo múltiples fórmulas: venta de publicidad, modelos freemium o de pago, suscripciones…
  • Crear un nuevo proyecto a partir de esta infraestructura de recursos.

Si tú o tú empresa estáis interesados en adquirirlos, ofrecemos su traspaso en propiedad exclusiva. Puedes contactar conmigo en «contacto@digitallearning.es» (por favor entiende que los correos que no vengan suficientemente identificados no vamos a atenderlos). Gracias.

Manuel Cabello (Socio-Director de Digital Learning/Academia Android)

Este es el número de tutoriales publicados:

Pincha en los textos de los contadores de Tutoriales publicados, Premium o Series de tutoriales para tener un detalle de las publicaciones que comprenden.

Desde hace unos meses, todos los contenidos, incluidos los Premium, son accesibles libre y gratuitamente.

  • Premium
  • Acceso libre
130
Acceso libre
126
Premium

Algunos datos sobre los contenidos que hemos publicado hasta la fecha:

74
Videos
61
Proyectos descargables
contacto[arroba]digitallearning.es

Hilo principal y jerarquía de procesos en Android

Post Series: Hilo principal y tareas en background

Siguiendo con los fundamentos para crear aplicaciones Android vamos a tratar en esta serie de tutoriales la ejecución de tareas en segundo plano (background) en Android. 

Los objetivos que vamos a cubrir en este módulo son:

  • Entender la importancia de los hilos o subprocesos en un sistema operativo.
  • Conocer la lógica de jerarquías de procesos para aplicaciones Android.
  • Conocer las principales características de las clases AsyncTask, Handler, Thread y Runnable que nos permiten implementar tareas en segundo plano.
  • Saber cuando se recomienda el uso de AsyncTask o el uso de Threads.
  • Ver con un proyecto un ejemplo práctico de uso e implementación de tareas en background.

En esta primera publicación nos centraremos en los 2 primeros puntos.

Nota: hemos tratado ya las tareas en segundo plano en publicaciones anteriores de Academia Android, y parte de lo que explicaremos en los siguientes tutoriales ya estaba descrito allí.

No obstante, esta serie, que se corresponde con el módulo 4 de nuestro nuevo curso basado en Android Studio, contendrá algunas diferencias en el contenido y la creación de un proyecto ejemplo ampliado, utilizando además la última versión disponible de Android Studio (versión 2.1.2, en el momento de elaborar esta documentación).

Hilo principal (main thread)

Android es un sistema operativo multitarea que permite la ejecución de varias tareas simultáneamente. Esta característica que a simple vista nos puede parecer algo básico, facilita que en muchas ocasiones las aplicaciones actualicen información sin afectar a la respuesta y manejo del dispositivo donde se ejecutan.

Para proporcionar esa funcionalidad, los procesos que se ejecutan han de poder descomponerse en hilos (threads).  Un hilo de ejecución o subproceso es la unidad de procesamiento más pequeña que un sistema operativo puede manejar.

Proceso multihilo

Al desarrollar para Android, debemos tener muy presente la experiencia final del usuario que va a utilizar las aplicaciones que creamos. Toda tarea que necesite de recursos costosos del sistema deberá realizarse en un hilo secundario para evitar que bloquee el hilo principal de la aplicación, y afecte al usuario durante la ejecución de la misma.

Por defecto, todos los componentes de la misma aplicación se ejecutan en el mismo proceso y es por eso que cuando hablamos del hilo principal o main thread, nos referimos al hilo de ejecución donde se ejecutan los componentes, servicios, actividades, etc. de una aplicación Android. Debido a la filosofía de Android respecto al consumo de recursos, el sistema se encarga de monitorizar el hilo principal y cualquier operación que supere los 5 segundos dará lugar a un mensaje de «Application Not Responding«, permitiendo al usuario esperar o forzar el cierre de la aplicación.

Android trata de mantener un proceso de aplicación durante el tiempo que sea necesario, pero necesita liberar recursos de memoria para procesos nuevos o de mayor importancia. Es aquí donde se delimita cada proceso en una «jerarquía de importancia«, basado en los componentes que se ejecutan en el proceso y el estado de los mismos.

Hay cinco niveles en la jerarquía de importancia. La siguiente lista muestra los diferentes tipos de procesos en orden de importancia:

Procesos en primer plano:

Proceso requerido para lo que el usuario está haciendo actualmente. Un proceso se considera que está en el primer plano si se dan cualquiera de las siguientes condiciones:

  • Activity que interactúa con el usuario (el método onResume() de la Activity ha sido llamado).
  • Cuando la Activity con la que interactúa el usuario aloja un Servicio (Service).
  • Cuando un Servicio ha llamado al método startForeground(), y por lo tanto se ejecuta en primer plano.
  • Cuando aloja un Servicio que será llamado durante el ciclo de vida de la aplicación (onCreate(), onStart() u onDestroy()).
  • Cuando aloja un BroadcastReceiver que está ejecutando el método onReceive().

Procesos visibles:

Este tipo de procesos no define ningún componente en primer plano. Un proceso se considera visible:

  • Si se define una Activity que no está en primer plano pero es visible para el usuario (llamada al método onPause() del ciclo de vida de la aplicación).
  • Si se aloja un Servicio destinado a ser invocado en primer plano o a una actividad visible.

Procesos de servicio:

Aquellos procesos que se ejecutan en un Servicio (iniciados con StartService()) y no pasan a las dos categorías superiores.

Procesos en segundo plano:

Proceso que se mantiene en una Activity en segundo plano, y que por lo tanto no es visible para el usuario (ocurre cuando se llama al método onStop() del ciclo de vida de la aplicación).

Procesos vacíos:

Se trata de procesos que no están presentes en los componentes de la aplicación.

Android clasifica a un proceso en el nivel más alto que puede, en base a la importancia de los componentes activos en dicho proceso. Si por ejemplo un proceso recibe un servicio y una actividad visible, el proceso está clasificado como un proceso visible y no como un proceso de servicio.

En la próxima publicación veremos las clases AsyncTask, Handler, Thread y Runnable que nos permiten implementar tareas en segundo plano.


Créditos: parte de estos contenidos están basados en la documentación oficial de Android Developers que están publicados bajo licencia Creative Commons Attribution 2.5.
Imagen de Cburnett publicada con licencia CC-BY-SA-3.0, via Wikimedia Commons

This Post Has One Comment

Comments are closed.