Fundamentos Android: Activity, View, Services, BroasCastReciver, ContentProvider, Widget

Bienvenidos a otra nueva lección del curso gratuito en www.AprendeAndroid.com últimamente estoy viendo que hay muchas webs/blogs que se están apropiando de mi trabajo gratuitamente, pero en fin... espero que les salga un Grano en el culito de esos que no te dejan sentarte! ;P.

En esta Lección, voy a explicar los distintos elementos que tiene una aplicación Android, ya de paso vamos cogiendo un poco de terminología, esto nos vendrá muy bien mas adelante! vamos a ver por encima cada uno de los elementos.

Activity (Actividades)

Las actividades son las encargadas de mostrar las interfaces de usuario e interactuar con él, suelen tener asociada una definición de pantalla (en formato xml) y son las encargadas de responder a los eventos de usuario (pulsaciones de botones, selección de listas, etc...), estas Actividades heredan de la clase Activity. ¿que es esto de la Clase Activity? es una clase ya predefinida de Android, basándonos en el ejemplo "Hola Mundo" y al poner esa (linea6), nuestra clase (conjunto de instrucciones que forman nuestro programa) heredara unas instrucciones predefinida para manejar el interface que hemos creado con el xml que define nuestra pantalla (layout).

Eclipse, Java, Android

El aspecto de la vista se aplica pasando un objeto tipo View (Los objetos View son los encargados de dibujar una parte rectangular de la pantalla, estos objetos solo pueden ser llamados desde una Activity que Herede de la clase Activity) al método Activity setContentView() (en el ejemplo de arriba linea11, entre los paréntesis se le pasa como parámetro el diseño de pantalla o Layout que esta en formato xml, ese es el objeto View).

Este método setContentView() es el encargado de dibujar la pantalla, normalmente la vista que pasemos ocupará toda la pantalla (aunque podemos aplicar temas a las activity's y hacer que sea mostrada por ejemplo como un ventana flotante por ejemplo, fíjate en la siguiente captura, se muestra un Activity "Editar un Lugar" con un tema de tipo Dialog, es decir no ocupa toda la pantalla, es como una ventana flotante esto se define en el Manifest.xml que ya lo veremos mas adelante).

Eclipse, Java, Android

Las Activity también pueden llamar a componentes modales que se mostrarán sobre su View como por ejemplo: diálogos, menús o mensajes emergentes de tipo Toast. Debes tener claro, que por cada pantalla distinta habrá una Activity distinta, pasar de una pantalla a otra se consigue lanzando nuevas Activity, y volver a la anterior se consigue cerrando la Activity actual. Normalmente las aplicaciones tienen una Activity marcada como punto de entrada, es decir como la primera o inicio, como vimos en el "Hola mundo" esto también se define en el Manifest.xml.

Pongamos un ejemplo practico, imagina un programa lector de correo, este tipo de aplicaciones tienen varias actividades, una para mostrar los mensajes del inbox, otra para ver el contenido del mensaje, y otra para escribir un nuevo correo que contendrá un botón para el envió del mismo. En el AndroidManifest.xml definiremos como punto de entrada la Actividad que muestra el listado de correos en inbox y el resto de actividades, las iremos lanzando conforme las vayamos necesitando! ;P

Por ultimo, y lo mas importante, es que cada Activity, tiene un "ciclo de vida", y unos métodos que se llaman en cada caso o periodo de la Activity, esto ultimo es FUNDAMENTAL para que comprendas el significado de todos los métodos que llamemos, si te fijas bien, veras en el gráfico el método onCreate(), fíjate que este es el que usábamos en nuestro ejemplos de HolaMundo, pero hay otros métodos, que también son útiles dependiendo si queremos usarlos en nuestra aplicación. Por ejemplo, si estamos usando nuestra aplicación (facebook por ejemplo), y de navegando, pulsamos sobre un enlace que nos abre el navegador, nuestra aplicación (facebook) llamara al codigo que tenga en el OnPause(), luego ira al onStop() y cuando terminemos de navegar y volvamos a la aplicación (facebook) esta, ira al codigo que tenga en el onRestart() y de alli al onStart() no se si me explico! pero vamos, que no te preocupes, las aplicaciones sencillas no suelen usar estos métodos, no es necesario implementarlos, es solamente que sepas que existen, y si tu aplicación quiere o necesita controlar esos estados, que sepas que puedes implementar codigo ahí! ¿ok?

Eclipse, Java, Android

Como te digo, ten muy, pero que muy presente este gráfico, seguro que lo consultaras mas adelante! ;p

View

Los objetos view son los componentes básicos con los que se construye la interfaz gráfica de una aplicación, por ejemplo, un objeto de tipo View seria un Botón, un cuadro de Texto, una lista despegable, Imagenes... aunque también existe la posibilidad completar estos controles creando los nuestros propios! ya veremos mas adelante algún ejemplo! ;p.

Servicios

Los servicios no tienen en interfaz visual, corren en segundo plano y se suelen encargar de realizar tareas que deben continuar ejecutándose cuando nuestra aplicación no está en primer plano. Los servicios extienden de la clase base Service.

Siguiendo con el ejemplo anterior, una aplicación de correo electrónico, también tendrá un servicio que se encargará de chequear si tenemos un correos nuevo cada cierto tiempo. Los servicios nos ofrecen un mecanismo para ejecutar tareas pesadas sin bloquear el resto de la aplicación ya que se ejecutan en un hilo distinto de ejecución (ya veremos también mas adelante esto, tiene mas tela de la que parece! ;P)

Receptores de mensajes de distribución (BroadcastReceiver)

Los receptores de mensajes no hacen nada excepto recibir y reaccionar ante mensajes de difusión. Extienden la clase BroadcastReceiver, y no tienen interfaz de usuario pero sin embargo son capaces de lanzar una Activity en respuesta a un evento o usar el “NotificationManager” para alertar al usuario de alguna accion o tarea.

Yo en su momento no entendí bien esto del BroadcastReciber, ahora lo entiendo de la siguiente forma: Imagina que el teléfono esta "escuchando" todo lo que pasa por el sistema (llamadas entrantes, llegada de SMS, cambio de posición del teléfono, GPS, cuando iniciamos el teléfono, cuando recibimos un correo, cuando le damos la vuelta boca abajo..) a nuestra aplicación, le podemos poner un filtro siguiendo con el rollo este de la aplicación de correo, que "escucharía" a los mensajes de tipo NUEVO_CORREO que lanzaría nuestro servicio que mostrara un icono en la barra de notificación de correo nuevo, esto seria un “BroadcastReceiver” .

Proveedores de contenido (ContentProvider)

Los proveedores de contenido hacen que un determinado grupo de datos estén disponibles para distintas aplicaciones. Extienden la clase ContentProvider para implementar los métodos de la interfaz, las aplicaciones no acceden a este interfaz directamente, sino que lo hacen a través de una clase ContentResolver. Este sistema permite acceder a datos almacenados en el sistema de ficheros, bases de datos SQLite o cualquier otra fuente de datos a través de un sistema unificado. El famoso lector de correo podría disponer de un “ContentProvider” que permitiera acceder al inbox y los datos de mensajes de una forma sencilla.

Widget

Los widgets son como mini-aplicaciones que se muestran en la pantalla principal (home screens) del dispositivo Android. Estas mini-aplicaciones pueden recibir actualizaciones periódicas de los datos que muestran, un ejemplo sencillo y que seguro que todos tenemos en el movil, es el típico Widget con información del tiempo.

Si te a gustado este sitio, puedes hacer click en me gusta en Facebook, Google+, Tweeter... es el único precio que te pido por este trabajo! ;P. Compartiendo, ayudaras a otros a encontrar esta web! GRACIASSSS.