Una actividad (del inglés activity) es una tarea realizada por una aplicación y que se centra en la interacción con el usuario, bien sea porque un proceso necesita unos datos de éste o por cualquier otro motivo.

Así, todas las actividades se basan en la creación de una ventana (a pantalla completa o no), en la que se posicionan los diversos componentes (botones, cuadros de texto o edición, imágenes, etc) necesarios para la comunicación con el usuario.

Los layouts, que se asocian a las diferentes ventanas o vistas, definen el mapa que permite a Android posicionar cada uno de los elementos en el lugar correspondiente de la pantalla.

Tal como indicamos en el capítulo anterior, los layouts deben definirse teniendo en cuenta tanto el tamaño de los elementos que contiene como el tamaño del elemento, habitualmente la pantalla u otro layout, que hace de contenedor del mismo, siendo posible definir layouts diferentes dependiendo del tamaño de dicho contenedor.

Ciclo de vida de las actividades

En informática existen dos conceptos básicos, que se explican entre los tres primeros días de carrera, y que nos acompañan durante toda nuestra vida laboral, y que son los conceptos de pila y cola.

Una pila es una estructura en la que el último elemento que entra es el primero que sale, el penúltimo en entrar es el segundo en salir y sucesivamente.

Por contra, una cola es una estructura en la que el primer elemento en entrar es también el primero en salir, mientras que el último en entrar será, lógicamente, el último en salir.

En Android el sistema gestiona las diferentes actividades usando el concepto de pila, de forma que, en un momento determinado, sólo la actividad que se encuentra en la cima de esta pila se está ejecutando, mientras que el resto están en standby y la memoria que ocupan puede ser asignada a otros procesos.

Así, cuando una actividad se encuentra en primer plano y otra ocupa la cima de dicha pila, aquella pasa a segundo plano y es susceptible de ser eliminada del sistema, en lo que se denomina “ciclo de vida de una actividad” y que se expresa gráficamente en la siguiente imagen.

Crear una actividad

Desgraciadamente el ADT no se integra con Eclipse tan bien como debería, así que para crear una actividad tendremos que realizar una serie de pasos (de forma manual):

Crear la clase asociada a la actividad, y que implementará todos sus métodos

Para ello haremos clic en FileNewClass e introduciremos los siguientes valores en la pantalla de creación de la clase:

  • Package: Seleccionaremos el paquete al que pertenece la clase de entre los definidos por nuestra aplicación,
  • Name: Introduciremos el nombre de la actividad, teniendo en cuenta que no se aceptan espacios ni caracteres especiales. De hecho, una buena práctica es poner la primera letra de cada palabra que forme el nombre en mayúsculas y el resto en minúsculas (por ejemplo MiPrimeraActividad),
  • Superclass: Indicaremos que la clase que estamos creando es una actividad introduciendo el tipo android.app.Activity.

Seguidamente haremos clic en finish para crear la clase, lo cual creará el archivo asociado a la clase y lo mostrará en el editor de Eclipse, para que podamos implementar sus métodos.

Publicitar la actividad

No obstante, crear una actividad no es sinónimo de poder utilizarla, para lo cual es necesario añadirla en el manifiesto de nuestra aplicación (archivo manifest.xml).

Activar una actividad

Una función o procedimiento se ejecuta de forma síncrona cuando el flujo de ejecución del programa en cuestión no vuelve al procedimiento principal (el que realiza la llamada) hasta que la función que ha sido llamada finaliza; mientras que una función se ejecuta de forma asíncrona cuando el proceso que realiza la llamada sigue ejecutándose aunque la función llamada no haya finalizado.

La creación y activación de una actividad es un proceso asíncrono que se realiza generalmente desde otra actividad, usando para ello las funciones startActivity o startActivityForResult, heredadas de la superclase, y que se diferencian en que la última permite obtener un resultado, también de forma asíncrona.

Los layouts

Si un actividad define el contenedor en el que se colocan los componentes de una ventana, un layout describe cómo se colocan dichos componentes en la misma.

Los layouts se estructuran en forma de árbol, con un elemento raíz que se posiciona sobre la ventana, y sucesivos compartimentos (nodos) en los que se colocan los elementos finales u hojas (imágenes, cuadros de edición o de texto, botones, etc).

Los contenedores de elementos más utilizados son los de tipo LinearLayout y RelativeLayout.

LinearLayout

Es un contenedor en el que los diferentes elementos se posicionan uno debajo del otro, o uno a la derecha del otro, dependiendo de si se define de tipo vertical u horizontal.

RelativeLayout

Se trata de un contenedor más complejo en el que es posible indicar la posición relativa de un elemento respecto de otro, permitiéndose incluso el solapamiento de éstos.

De hecho, por defecto todos los componentes se alinean en la parte superior izquierda del contenedor, siendo responsabilidad del diseñador posicionarlos convenientemente mediante el uso de atributos y la definición de dependencias, según sea el caso.

Para cada uno de los contenedores, así como para los elementos finales (botones, imágenes, etc) es posible definir multitud de atributos, como por ejemplo el tamaño horizontal o vertical, la visibilidad, el color o imagen de fondo, etc.

Descarga de la aplicación del curso

Os animamos a descargaros la primera parte de la aplicación que estamos desarrollando en este curso Android, que amplía los conceptos introducidos en estas primeras sesiones y que contiene un código totalmente funcional que podréis probar en el emulador o en vuestros dispositivos.

Una vez descarguéis la aplicación, deberéis almacenarla en el directorio de trabajo de Eclipse (el que seleccionasteis durante el proceso de instalación).

Seguidamente será necesario importarla desde Eclipse, para que éste la reconozca y podáis acceder a la misma, bien sea para editarla o para ejecutarla en el emulador; para lo cual deberéis seguir los siguientes pasos:

  1. Seleccionar la opción import en el menú File,
  2. En la siguiente pantalla, seleccionar “Existing project into workspace” y pulsar next,
  3. Hacer clic en browse y navegar hasta el directorio en el que hemos almacenado la aplicación (hay que entrar en el directorio, hasta que veamos el archivo manifest.xml),
  4. Hacer clic en finish.

La próxima semana os explicaremos cómo crear una pantalla de configuración para vuestras aplicaciones, así como los métodos que usa el sistema para facilitar el acceso a los valores especificados por el usuario.

Como siempre, os invitamos a visitar el Hilo oficial del Curso de Android en Foromóviles, donde podéis hacernos llegar vuestras dudas y comentarios.




Ingeniero en Informática por la Universidad Politécnica de Cataluña.Programador en perl, php, c++, Java,...Desarrollador reconocido del foro XDA-Developers.Usuario Android desde 2009, y actualmente también desarrollador de utilidades y ROMs para ese sistema.Mi primer smartphone fue un Qtek-S100, en 2005, y desde entonces ando buscando el dispositivo perfecto. Si no fuera por la crisis cambiaría de móvil varias veces al día :)

2 comentarios

  1. Buenas

    Estoy siguiendo el tutorial porque hace poco que he empezado a mirar cosillas de Android y esta es una buena forma para tener ideas para ir haciendo una aplicación.

    Quería comentar que he encontrado un pequeño fallo en la aplicación. Bueno más que fallo es un comportamiento no deseado.

    Cuando estamos en la carpeta raíz, el item de subir directorio no aparece (como bien se comenta en el código) por lo que el primer item puede ser una carpeta o fichero. Pero cuando haces click en él, se hace que se muestre el mensaje de que ya estamos en el directorio raíz.

    Se resuelve fácilmente teniendo en cuenta que si la posición pulsada es la 0 y estamos en el directorio raíz, se obtenga el nombre del fichero de la lista de items y se realice el comportamiento normal (mensaje de que no es un directorio o intentar navegar a él).

    Saludos

Deja una respuesta