La columna 80

El blog técnico-personal de Ángel J. Vico… en español

Introducción a las actividades de Android

Posted by Ángel J. Vico en 29 de julio de 2011

Hace algún tiempo vimos cómo construir un entorno de desarrollo para aplicaciones Android y lo pusimos a prueba con una primera y sencilla aplicación. También vimos algunos detalles sobre la forma en que se estructuran los proyectos Android y dónde debemos situar los recursos de nuestra aplicación.

Todo eso está muy bien y es necesario conocerlo, pero ya va siendo hora de entrar en temas más prácticos. Aunque, no obstante, no podemos ponernos a picar código sin más. Antes tenemos que conocer los diferentes elementos o componentes con los que tenemos que trabajar. Es necesario que conozcamos cómo funcionan las aplicaciones Android para poder programar las nuestras.

Y qué mejor punto de partida que algo que casi todas las aplicaciones (o, al menos, las que tienen interfaz de usuario) poseen: las actividades.

Las actividades son el elemento principal de toda aplicación Android que muestra información en la pantalla del dispositivo. Vienen a ser el equivalente a las ventanas de un sistema operativo de escritorio, si entendemos ventana como un área gráfica donde se visualizan elementos que permiten mostrar información al usuario o permitir su interacción con la aplicación mediante un dispositivo señalador (ratón) o introduciendo información desde un teclado. Si nos limitamos a esa definición de ventana, una actividad viene a ser lo mismo: un espacio, un contenedor de elementos que permiten mostrar información al usuario o su interacción con la aplicación mediante un dispositivo señalador (normalmente el dedo) o introduciendo información mediante un teclado (normalmente virtual).

Aunque esta comparación entre actividades y ventanas es la más utilizada en la literatura sobre Android, a mí no me parece la más adecuada. A medida que vas profundizando en el desarrollo para Android te vas dando cuenta de que las aplicaciones Android se parecen más a aplicaciones web que a aplicaciones de escritorio. Y pienso que sería mucho más acertado comparar las actividades con páginas web.

Una ventana (en un sistema operativo de escritorio) es mucho más que un área gráfica. Una ventana tiene entidad propia e independiente en el escritorio, y permite interacciones con el usuario más allá de su propio contenido. A menos que el desarrollador haya impuesto restricciones explícitas, una ventana se puede cambiar de tamaño, se puede colocar en cualquier parte del escritorio si no lo ocupa entero, permite ver otras ventanas simultáneamente, el usuario puede escoger qué ventana queda visible sobre las demás e, incluso, una ventana se puede ocultar (minimizar) en cualquier momento.

Por otro lado, en un navegador (sin pestañas) sólo se puede mostrar una página cada vez y la página ocupa siempre todo el área de navegación. Una ventana puede tener dimensiones fijas sin permitir que el usuario las modifique. En un navegador el usuario puede cambiar el tamaño del área de navegación y la aplicación tendrá que adaptarse.

También existen diferencias a la hora de diseñar la interfaz de usuario de las aplicaciones. Mientras que en una ventana casi todos los elementos tienen tamaño fijo y posición absoluta (o, al menos, relativa a los bordes de la ventana), en una página web los tamaños se suelen definir como porcentajes y los elementos se suelen posicionar uno detrás de otro (lo que se interpreta como “a la derecha si cabe, debajo si no”) o en tablas.

Pues resulta que las actividades de las aplicaciones Android se parecen más a las páginas web que se muestran en un navegador que a ventanas. El área de navegación sería el total de la pantalla del dispositivo Android salvo la barra de notificaciones (a menos que la actividad se muestre a pantalla completa, igual que en un navegador). El dispositivo Android sólo puede mostrar una actividad cada vez y ésta ocupará todo el espacio disponible (al menos, a día de hoy. No sé si las versiones de Android para tabletas cambiarán esto en algún momento). Y, de forma similar a las páginas webs, los elementos que se incluyen en una actividad normalmente adaptan su tamaño y posición al tamaño de la pantalla (aunque esto lo veremos en otro post).

Igual que en el navegador podemos hacer click en un enlace y cargar una nueva página que sustituye por completo a la página anterior, en Android una actividad puede lanzar otra nueva. La diferencia, como veremos más adelante, es que la nueva actividad se superpone a la anterior pudiendo, llegado el caso, permitir que parte de la actividad anterior siga siendo visible. De hecho, las actividades en Android se organizan en forma de pila: cada nueva actividad se muestra sobre la actividad anterior, a la que se puede regresar mediante el botón “retroceso”.

Esta pila necesita un punto de partida, una base, una primera actividad sobre la que se superpongan todas las demás. Esa actividad la proporciona la aplicación Inicio (Home o Launcher), el lanzador de aplicaciones. Esta actividad viene a ser como la página de inicio de los navegadores, excepto porque en Android no nos podemos permitir que sea una página en blanco. Esto es debido a que el navegador dispone de elementos externos (es decir, fuera del área de navegación) que permiten cargar nuevas páginas (menú de favoritos, marcadores, barra de direcciones, etc), mientras que en Android normalmente no tenemos algo así. Por ese motivo, la actividad inicial nos debe permitir lanzar otras actividades. Las aplicaciones de inicio proporcionan esa funcionalidad mediante una caja o menú de aplicaciones instaladas y accesos directos en la propia actividad.

Cuando se ejecuta una aplicación, Android muestra su actividad principal sobre la actividad del lanzador de aplicaciones. Después, esa actividad puede mostrar otras actividades de la misma aplicación o de otras aplicaciones. En cualquier momento se puede usar el botón “retroceso” para ir eliminando actividades de la pila hasta llegar de nuevo a la actividad de la aplicación Inicio, de la que no se puede salir.

Esta forma de trabajo constituye una filosofía en si misma: una aplicación está formada por una o más actividades que no necesariamente estarán todas en memoria al mismo tiempo y de las que sólo una cada vez será visible. Si a esto le añadimos el hecho de que Android decide por su cuenta cuándo una aplicación es descartada de memoria (cerrada) y que una actividad puede seguir teniendo entidad (seguir existiendo) después de que su proceso haya sido destruido, la cosa se complica bastante. Todo esto es lo que se denomina ciclo de vida de las actividades y lo veremos en el siguiente post.

Recuerda que en esta página dispones de enlaces a todos los artículos sobre Android que he publicado en La columna 80.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s