(+34) 958084455 informacion[arroba]academiaandroid.com
Imagen Componentes

Componentes de una Aplicación Android

Post Series: Creación de Apps Android: componentes básicos

En esta nueva linea de publicaciones que iniciamos, vamos a explicar los aspectos básicos para la creación de una App Android utilizando el IDE Android Studio.

En esta primera serie de tutoriales aprenderemos:

  • Cuáles son los componentes básicos con lo que crear una App Android: Activities, Services, Intents, Content Provider y Broadcast Receivers.
  • Cómo implementar una Activity y su ciclo de vida.
  • La estructura y función del fichero AndroidManifest.xml.
  • Construir un archivo APK del proyecto desarrollado.
  • Cómo usar de un Intent para enviar información entre Activities y cómo crear intefaces de usuario básicas, a través de un proyecto ejemplo que crearemos.

Android Studio: primeros pasos

Si no estás familiarizado con el entorno de desarrollo Android Studio, consulta antes nuestros tutoriales y videos sobre este IDE. En ellos te explicamos:

  • Sus características generales
  • Las diferencias con Eclipse
  • Su instalación y la del SDK (Kit de Desarrollo para Android) y cómo puedes consultar/descargar las distintas versiones disponibles
  • Configuración de un emulador
  • Creación de un proyecto (nuevo o importado desde Eclipse).
  • Estructura de un proyecto. Añadir dependencias Gradle
  • Uso de GitHub
  • Descripción de funcionalidades que debes conocer: depuración, editor de layaout…

Activities, Services, Intents, Content Provider y Broadcast Receivers

Android facilita la creación de aplicaciones  gracias al uso de un conjunto de componentes software reutilizables. Vamos a explicar los principales y cómo podemos implementarlos dentro de un proyecto Android:

Activity

Éste es el componente principal de la interfaz gráfica de una aplicación en Android. A cada Activity se le asigna una ventana en la cual se dibuja la interfaz de usuario, con la que el usuario podrá interaccionar para realizar las diversas acciones que hayamos contemplado en la aplicación.

Para construir la interfaz gráfica, cómo veremos más adelante, tenemos los componentes denominados Views (vistas) con lo que dispondremos de numerosos controles básicos, como por ejemplo, botones, listas desplegables o cuadros de texto, pudiendo extender la funcionalidad de estos controles o crear otros personalizados.

Por lo general, una aplicación está formada por diferentes Activities, que están más o menos ligadas entre sí. Cuando se suceden varias, éstas se van almacenando en una pila mediante el mecanismo de LIFO (Last In – First Out: la última que entra en la pila es la primera que sale) y cuando el usuario pulsa el botón atrás, se extrae la Activity actual de la pila y se reanuda la anterior Activity situada allí.

Cada Activity que creemos, la tenemos que definir en el AndroidManifest.xml (explicamos este fichero en un siguiente apartado) con la etiqueta <activity>.

Para iniciar una Activity, podemos utilizar dos métodos (como veremos más adelante):

  • Método Context.startActivity()
  • Método  Context.startActivityForResult(), cuando queramos que se devuelva algún resultado.

También mencionar que tenemos otros componentes que funcionan dentro del ámbito de una Activity, los Fragments, que amplían y enriquecen las posibilidades de interacción con el usuario.

Service

Los services (servicios) son componentes sin interfaz gráfica que se ejecutan en segundo plano. Son llamados a través de otro componente, como puede ser una Activity, y seguirán ejecutándose en segundo plano aunque la Activity haya finalizado o, incluso, aunque hayamos salido de la aplicación.

Cada servicio que creemos lo tenemos que declarar en el AndroidManifest.xml mediante la etiqueta <service> . Para ser iniciados podemos usar dos métodos:

  • Método Context.startService()
  • Método  Context.bindService()

Intent

Un Intent es el elemento básico de comunicación entre los componentes que estamos describiendo, es decir, mediante un Intent se podrá llamar a una Activity, iniciar un servicio, enviar un mensaje broadcast, iniciar otra aplicación, etc.

Su uso más importante es para iniciar Activities, por lo que puede considerarse como la unión entre Activities. Más adelante veremos cómo hacer esto.

Los objetos Intent están formados por un paquete de información. Contienen información de interés para el componente que la recibe, como la acción que será ejecutada y los datos necesarios,  más la información de interés para el sistema Android, como la categoría del componente que manejará el Intent y las instrucciones de cómo lanzar la Activity.

Principalmente pueden contener lo siguiente:

  • Nombre de componente: el nombre del componente que manejará el Intent. Es una
    combinación del nombre de la clase del componente y el nombre del paquete especificado en el AndroidManifest.xml de la aplicación donde reside el componente (por ejemplo, com.academiaandroid.holamundo.Activity). Esto es opcional. Si lo definimos, se creará una instancia de la clase designada. Si no es así, se usará otro tipo de información para localizar el objetivo deseado.
  • Acción: una cadena de texto que designa la acción a ser ejecutada. La clase Intent define una serie de ellas como pueden ser las siguientes, entre otras:
    • ACTION_CALL: Inicia una llamada telefónica.
    • ACTION_EDIT: Muestra datos para que el usuario pueda editarlos (como los datos de un contacto).
    • ACTION_MAIN: Indica la Activity principal de una aplicación, la que se ejecutará al iniciarse.

Nosotros también podemos definir las nuestras propias para activar componentes en nuestra aplicación. Las que definamos, tienen que incluir el nombre del paquete como prefijo, por ejemplo: com.academiaandroid.holamundo.SHOW_COLOR .

Estas acciones se podrán establecer mediante el método setAction() y obtenerlas a través de getAction().

Nota: en una próxima publicación veremos un ejemplo completo del uso del componente Intent para lanzar y enviar parámetros a una segunda Activity.

Content Provider

Un Content Provider es un componente destinado a compartir datos entre aplicaciones. Dichos datos pueden ser almacenados en el sistema de archivos, en una base de datos SQLite o en cualquier otro lugar que sea accesible desde nuestra aplicación.

Un ejemplo de Content Provider es el que utiliza Android para gestionar la información de un contacto, mediante el cual cualquier aplicación podrá acceder a estos datos haciendo una petición al método query()  sobre la interfaz ContentResolver.

Broadcast Receiver

Un Broadcast Receiver es un componente que detecta y reacciona frente a mensajes globales del sistema, como puede ser batería baja, SMS recibido, llamada recibida, etc. Además de esto, una aplicación también puede iniciar un Broadcast Receiver (por ejemplo, para saber si se han descargado datos al dispositivo y poder ser usados por esa aplicación).

Al igual que ocurría con los Services, un Broadcast Receiver tampoco muestra ninguna interfaz gráfica.

Al igual que los servicios y Activities, los Broadcast Receiver también los tenemos que registrar, pero esta vez tenemos dos formas de hacerlo:

  • Método Context.registerReceiver()
  • declarándolos en el AndroidManifest.xml con la etiqueta <receiver>

Si registramos un broadcast receiver en el onResume() de una Activity, se debe borrar en el onPause() de la misma Activity mediante el método  Context.unregisterReceiver().

Nota: en la próxima publicación veremos el ciclo de vida de una Activity donde explicaremos los diferentes estados por los que puede pasar y los métodos asociados.. Por ejemplo, los dos que hemos citado en el párrafo anterior: método onPause(), para pasar a estado ‘en pausa o interrumpida’ y método onResume(), para reanudarla.

Para iniciar un Broadcast Receiver podemos usar dos alternativas:

  • Método Context.sendBroadcast(), si queremos iniciar un broadcast ‘desordenado’ (sin esperar nada a cambio, sería un modo de comunicación hacia un lado)
  • Método Context.sendOrderedBroadcast(), si queremos que por el contrario sea ‘ordenado’ (lo que significa que los receptores de este broadcast pueden devolver información como respuesta a ello)

En la próxima publicación veremos cómo crear una Activity y explicaremos su ciclo de vida

This Post Has 3 Comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *