2. Estado del arte
2.3 Plataforma Android
2.3.2 Principales bloques de construcción de una aplicación Android
Los bloques de construcción básicos son los componentes que se usan en la implementación de las aplicaciones Android por parte de los desarrolladores. Estos componentes pueden depender unos de otros, pero cada uno de ellos existe como una entidad propia y desempeña un papel específico. Cada uno es una pieza única que ayuda, junto al resto de bloques, a definir el comportamiento global de la aplicación.
Existen cuatro tipos diferentes de componentes que una aplicación puede contener: Activities, Services, Content providers y Broadcast receivers.
2.3.2.1 Activity
Una actividad, por lo general, es una pantalla que el usuario ve en el dispositivo y con la que puede interactuar. Al ser la parte más visible de las aplicaciones Android, las actividades son el componente más utilizado. Cada una interactúa con los usuarios facilitándoles una ventana con la que puedan diseñar su propia interfaz de usuario.
Una aplicación normalmente está compuesta de múltiples actividades que están más o menos ligadas entre sí, y el usuario salta de una a otra. Una de las actividades de la aplicación es la denominada “main activity”, es decir, la actividad principal, la que se ejecutará primero cuando se lance la aplicación. El movimiento de una pantalla a otra se logra al empezar una nueva actividad. Cada activity puede hacer que comience otra nueva a fin de realizar una acción diferente. El usuario podrá navegar hacia atrás o hacia delante fácilmente, puesto que cuando empieza una actividad, la anterior se detiene, pero el sistema la mantiene almacenada en una pila de actividades. Cuando comienza una actividad también se añade ésta a la pila. El hecho de usar dicha estructura de datos, hace posible que cuando el usuario quiere regresar a la pantalla previa, el sistema extrae y destruye la actividad actual y reanuda la anterior [14]. Relacionado con este tema está el apartado 2.3.3.3, en el que se expone el ciclo de vida de las actividades.
Para implementar una nueva actividad se creará una subclase de Activity, definiendo su propia interfaz de usuario (mediante una jerarquía de vistas, es decir, objetos derivados de View) y definiendo la nueva funcionalidad de la actividad [12]. En el apartado 2.3.3.4 se explica más detalladamente el tema de la interfaz de usuario.
Un ejemplo es una aplicación de correo electrónico que tenga una activity que muestre en la pantalla la lista con los nuevos emails, otra activity con la pantalla para poder escribir un nuevo correo y otra más para leer los mensajes.
2.3.2.2 Service
Un servicio es un componente que se ejecuta en un segundo plano (background) para realizar, o ejecuciones durante un largo periodo de tiempo, o trabajos para los procesos de control remoto. Es código no visible, no tiene interfaz gráfica [14]. Se usan para efectuar procesos periódicos que deben continuar aun cuando no estén activas o visibles las actividades de la aplicación.
Otro componente de la aplicación puede inicializar un service y éste continuará ejecutándose en background incluso cuando el usuario cambie a otra aplicación. En el apartado 2.3.3.3 se expone con más detenimiento el ciclo de vida de un service.
Los servicios son útiles para acciones que se quieren llevar a cabo durante un tiempo, sin importar que sea lo que aparece en la pantalla del dispositivo. Un ejemplo es una aplicación para reproducir música que sigue funcionando mientras el usuario se mueve de una aplicación a otra [15].
2.3.2.3 Content Provider
El proveedor de contenidos es el componente de Android encargado de hacer posible la compartición de datos entre aplicaciones. Por defecto, cada aplicación Android se ejecuta de manera independiente, almacenando sus propios datos en ficheros, bases de datos o cualquier otra estructura de almacenamiento accesible por ella, haciendo que todos sus datos permanezcan aislados del resto de aplicaciones del sistema. La necesidad de intercambiar información entre aplicaciones se solventa a través de los content providers que, dependiendo de los permisos establecidos, permitirán que una aplicación, consulte, añada, borre o actualice datos de cualquier otra.
Como ejemplo de proveedor de contenidos se encuentra el facilitado por el sistema Android para gestionar la información de los contactos del usuario. Cualquier aplicación que posea los permisos adecuados puede, por tanto, acceder a la información sobre alguna persona en particular [14].
2.3.2.4 Broadcast Receiver
Es el componente destinado a detectar y reaccionar ante los mensajes broadcast que se producen en el sistema, ya sean originados por el propio sistema o por cualquier otra aplicación. El receptor es un código inactivo pero que, una vez que se lanza un evento al cual está suscrito, se activa.
Los broadcast receivers no tienen ninguna interfaz gráfica asociada, pero para informar al usuario de que ha ocurrido algún evento externo, pueden crear notificaciones o alertas que se muestran en la barra de estado (ver ejemplo de la Figura 2. 6).
Algunos ejemplos que escenifican este componente son los anuncios de que la pantalla se ha apagado, la batería está baja o informar a otras aplicaciones de que se ha descargado algún dato en el dispositivo y éste está disponible por su uso [14].
2.3.3.1 Aplicaciones, Tareas, Procesos e Hilos 43