Android-Los componentes de Android

Programar para Android necesita ademas de saber programar en Java, conocer la estructura del proyecto, conocer las APIs de Android, conocer los componentes de una aplicacion de Android y el ciclo de vida, temas que abarcaremos en este articulo.

Componentes de una aplicación de Android

En la programacion de Android tenemos toda una serie de componentes/comportamientos, dentro de los que nos debemos mover. En este mundo todo debe estar mucho mas organizado. El programador debe introducir su codigo en los sitios habilitados para ellos, y cumpliendo la mision que Android espera. Vamos a revisar cuales son:

Activity

Es un componente de Adroid que proporciona el acceso a pantalla. Una activity corresponde a una interfaz gráfica, en la que el usuario podrá interactuar.

Las actividades se crean extendiendo la clase “Activity”. Hay distintos tipos de subclases de activity.

La interfaz del usuario esta formada por diferentes vistas que definen los elementos de la pantalla (Botones, texto, imágenes….)

A continuacion, podeis ver el ciclo de vida de la Actividad, y supongo que empezais a intuir que todo nuestro programa, girará en torno a esto.

Observad que cuando se cierran, no se destruyen y solo permanecen ocultas hasta ser llamadas.

activity_lifecycle

En nuestra clase,debemos implementar los metodos siguientes

public class Activity extends ApplicationContext {
 
   protected void onCreate(Bundle savedInstanceState);

   protected void onStart();

   protected void onRestart();
  
   protected void onResume();

   protected void onPause();

   protected void onStop();

   protected void onDestroy();

 }

Al finalizar una actividad, se puede llamar a “setResult( int )” para devolver el resultado al la funcion que la llamó indicando sifinalizo correctamente o no.

Teneis un detalle muy completo sobre Activities en

http://developer.android.com/reference/android/app/Activity.html

Broadcast Receiver

Este componente nos permite recibir mensajes originados por el sistema operativo,  en la misma app o en otra cualquiera. Realmente, si no necesitamos recibir mensajes de fuera de nuestra app, deberiamos utilizar la clase LocalBroadcastManager.

Deberemos extender esta clase para recibir los mensajes (intents) enviados por “sendBroadcast”

Para recibir un mensaje debemos registrar una instancia de esta clase en el apartado “< receiver >” del AndroidManifest.xml, o de forma dinámica por medio de  Context.registerReceiver(). En este segundo caso, todo lo que registremos durante  Activity.onResume() lo deberemos desregistrar en Activity.onPause().

ContentProvider

La clase ContentProvider facilita informacion (datos) a las aplicaciones. Necesita extender esa clase si ha de compartir datos con otras aplicaciones (por ejemplo, la lista de contactos).

Si los datos de su aplicacion no se han de compartir, puede utilizar directamente SQLiteDatabase.

Los métodos que va a necesitar implementar son:

  • onCreate() Llamado cuando se inicializa el componente
  • query(Uri, String[], String, String[], String) Devuelve la información solicitada.
  • insert(Uri, ContentValues) para insertar nuevos datos en el ContentProvider.
  • update(Uri, ContentValues, String, String[]) Actualiza la informacion.
  • delete(Uri, String, String[]) borra informacion del ContentProvider.
  • getType(Uri) devuelve el  MIME type del dato

Service

Un servicio es un componente de la aplicacion pensado para realizar acciones que pueden necesitar tiempo para completarse, como subir imagenes a la red, descargar musica….

Un servicio no tiene interfaz de usuario y puede funcionar de dos formas:

Started: El servicio es lanzado por una actividad y queda totalmente desconectado de la misma, el servicio seguira funcionando incluso si se aborta la actividad que lo lanzo. No tiene forma de comunicar a quien lo inicio su finalizacion. Cuando el servicio acaba con su cometido, el solo se cierra.

Bound: El servicio queda unido a la actividad que lo lanzo y puede interaccionar con ella. Pueden unirse al servicio cualquier numero de actividades, pero cuando una se cierra, el servicio se destruye.

Los servicios  se deben declarar en el manifiesto:

< manifest ... >
  ...
 < application ... >
    < service android:name=".ExampleService" />
    ...
 < /application>
< /manifest>

Intents

Un Intent es un componente de la aplicacion ,de la clase “Intent” que facilita la comunicacion entre app. o con servicios que corren en background.

La información imprescindible de un “Intent” son:

  • action: Indica la accion que se desea realizar: ACTION_VIEW, ACTION_EDIT, ACTION_MAIN
  • data: Proporciona los datos necesarios para realizar la accion solicitada.

Algunos ejemplos de la comunicacion con servicios de background, podrian ser:

  • ACTION_VIEW content://contacts/people/1 — Presenta la informacion del contacto 1
  • ACTION_DIAL content://contacts/people/1 — Presenta el marcador con los datos de la persona 1 rellenos
  • ACTION_VIEW tel:123 — Presenta el marcador con ese numero relleno, aunque no sea lo mas logico
  • ACTION_DIAL tel:123 — Presenta el marcador con ese numero relleno,
  • ACTION_EDIT content://contacts/people/1 — Edita la informacion del contacto “1”.
  • ACTION_VIEW content://contacts/people/ — Presenta una lista de personas, en las que el usuario puede navegar, y cuando seleccione una, deberiamos generar un nuevo “Intent” { ACTION_VIEWcontent://contacts/N } para iniciar alguna actividad con ese contacto

los Intents los podemos realizar de forma:

Explícita: en donde indicamos el componente objetivo mediante paquete y nombre de la clase (o alias)

Implícito: No declaramos el objetivo, por lo que el “Intent” se le entrega a un componente del S.O. que lo analiza, y en funcion de sus datos, decide cual puede ser el objetivo del mismo.

Todos los intents que podemos atender se han de declarar en AndroidManifest.xml, y ya lo veremos detalladamente cuando llegue el momento, ahora os dejo un enlace en donde podeis encontrar los “Intents” comunes.

http://developer.android.com/guide/components/intents-common.html

Y como quiero que os deis cuenta que las cosas no son tan complicadas como parecen vamos a empezar a escribir nuestra primera “App”

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Android, Formacion. Guarda el enlace permanente.

2 respuestas a Android-Los componentes de Android

  1. muy interesante gracias, no tendrá las descripciones de listas personalizadas y como llamarlas desde otra activity?

    • Miguel dijo:

      No se exactamente a que te refieres con “las descripciones de listas personalizadas”,prueba a ver si Google con esto “listas personalizadas android” te puede ayudar, respecto a la interrelacion entre Activities, lo tocaremos mas adelante

Deja un comentario