Hace ya algunas semanas que publiqué el último artículo de aprendizaje de programación para Android, y posiblemente algunos de los lectores creíais cerrado o desatendido el tema, pero ya se sabe, hemos superado el Agosto y las cosas durante este mes van a otro ritmo… En este capítulo vamos a ver los conceptos fundamentales que necesitaremos conocer para planificar un desarrollo correcto.

Lo más importante a tener en consideración, es que a diferencia de las aplicaciones de escritorio, en Android, no vamos a crear un punto de acceso a la aplicación en forma de un main estático, toda aplicación debe definir sus componentes en un archivo de descripción que llamamos android manifest sobre el que ya hicimos algunos comentarios en el último capítulo. En este archivo declararemos los detalles de la aplicación como la versión de Android mínima requerida, el nombre de la aplicación y su paquete. También declararemos aquí los componentes de la app y sus permisos entre otros. Existen cuatro tipos de componentes; Activity, Service, Content Providers y Boradcast Receiversque deben ser declarados en el android manifest.

Activity

Estas son clases públicas que representan las pantallas de nuestra aplicación, y que deben heredar de la clase base android.Activity o cualquiera de sus descendientes. Al ser iniciadas, llaman el método onCreate, y ya veremos en los siguietes artículos que tiene un ciclo de vida muy particular y que es fundamental comprender para un correcto desarrollo.

Service

Un Service es un componente que se lanza y corre en background sin interacción por parte del usuario, y pueden correr sobre su propio proceso de modo que permite el uso de multitarea de forma independiente a los hilos de las Activities. Los desarrolladores pueden crear sus propios servicios relacionados a las aplicaciones para ofrecer funcionalidades de uso interno o para la interacción con otras aplicaciones. Por poner un ejemplo podríamos crear un servicio que controla la descarga de archivos desde nuestra aplicación y aunque cerremos todas las pantallas de esta, la descarga se mantuviera en progreso y nos notificara la finalización de esta.

ContentProvider

Un ContentProvider es un sistema que permite a las aplicaciones compartir datos y permitir el acceso a estosdesde la misma o desde aplicaciones externas. Si deseamos ofrecer a otras aplicaciones el acceso a información o datos de nuestra aplicación deberemos crear una clase que heredará de la clase android.content.ContentProvider. Hay muchas aplicaciones estandar en Android que permiten acceso a sus datos, como por ejemplo la lista de contactos o el Calendario.

BroadcastReceivers

Podemos definir un BroadcastReceiver como un receptor de eventos del sistemay puede utilizarse para dar conocimiento a nuestra aplicación de determinados sucesos. Podemos de este modo detectar por ejemplo el bloqueo o desbloqueo de la pantalla o la recepción de una llamada entre muchos otros. Para definir un BroadcastReceiver es necesario extender la clase android.content.BroadcastReceiver.

Los Intents

Todo esto está muy bien, pero queda todavía un concepto realmente importante que no resulta tan sencillo de definir, y que es en realidad el fundamento del control de las aplicaciones. Hablamos de los Intents, un mecanismo que se utiliza para pasar mensajes entre los distintos componentes de una aplicación y que tiene multitud de construcciones y modos de aplicación. Para simplificarlo, si tomamos en consideración que una Activity es un componente que se comporta como una vista o pantalla de la aplicación diremos que para lanzar una Activity determinada, lo haremos mediante el envio de un Intent, y este puede llevar asociada la información necesaria para que la Activity sepa como comportarse en caso de ofrecer variantes o cual debe ser la Activity que capturará dicho Intent para actuar.

Podemos imaginar, por ejemplo, como debe funcionar la aplicación de contactos de Android… Debe tener por lo menos una Activity diseñada para mostrar la lista de contactos, y una Activity capaz de mostrar los datos del perfil de un contacto. Esto es muy simplificado, pero servirá para ilustrar el uso de los Intents:

Cuando estamos visualizando la lista de contactos, al presionar sobre uno de ellos, no estamos llamando neesariamente a la Activity encargada de mostrar el contacto, si no que se lanza un Intent que llevará asociado el ID de dicho contacto, y el sistema determina cual debe ser la Activity que lo atienda. En cualquier caso, será necesario desarrollar este tema de forma mucho más detallada con ejemplos.

Esto es todo por hoy, en el próximo capítulo (no habrá que esperar tanto) ya empezaremos a tocar un poco más el código y pondremos algunos ejemplos.