Introducción
El sistema Android genera una serie de mensajes que nos puede interesar "escuchar" para según que queramos realizar. Este sistema de de mensajes se ajusta al patrón de diseño Observador 1, en Android se denomina Broadcast receivers.
Android se encargará de realizar de publisher de determinados eventos que nos pueden interesar: el aparato se ha iniciado, hay conexión de red.... Nosotros debemos subscribirnos al evento que nos interesa, así seremos avisados cuando este tenga lugar, pudiendo realizar la operación que necesitemos. Además, Android nos permite configurar nuestros propios eventos, pero eso lo veremos mas adelante en otro post.
Generación Listener.
Primero debemos generar una clase que será la encargada de recibir el aviso y realizar la operación que nosotros necesitemos realizar. En el ejemplo vamos a ver como subscribirnos para que Android nos avise cuando se ha iniciado el dispositivo. De esta forma podemos realizar que nuestro programa lance un proceso de consulta de datos periodica, por ejemplo.
La clase que crearemos heredará de la clase BroadcastReceive 2, y deberemos sobreescribir el método onReceive que es el que se ejecutará cuando se produzca el evento.
// BootReceiver.java
package com.acme;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Realizar acciones
Log.d("BootReceiver", "Dispositivo iniciado");
}
}
Subscribiendonos.
Ya tenemos la clase que deriva de BroadcastReceiver, pero nos falta indicar de alguna forma que queremos observar el evento que nos interesa con dicha clase. Esto se realiza mediante el fichero de Manifest. Veamos como:
//## AndroidManifest.xml: <application>
...
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
...
Ya tenemos creada la clase que se encarga de recibir el mensaje y nos hemos subscrito al mensaje que nos avisa, pero si lo probamos no hace nada... que pasa, pues nos falta indicar que la aplicación va a usar dicho mensaje y el usuario nos debe dar permiso. Para ello debemos indicar en el fichero de Manifest los mensajer que utilizaremos. En nuestro caso android.permission.RECEIVE_BOOT_COMPLETED
//## AndroidManifest.xml: <manifest>
...
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...
Es importante acordarse de indicar los permisos ya que no se nos indica ningún tipo de error y puede ser costoso encontrar este tipo de errores.
Bibliografia
[1]Wikipedia Patrón Observador[2] Developer Reference: BroadCastReceiver (inglés)
0 comentarios:
Publicar un comentario