Programación Android, NotificationManager y NotificationCompat II

Hace un par de meses explicamos cómo mostrar notificaciones en Android, sin embargo el ejemplo se quedó a la espera de completar los parámetros de la notificación para abrir la aplicación y añadiendo un BroadcastReceiver que también lance la notificación.

En primer lugar vamos a explicar el código que necesitamos para lanzar la aplicación al pulsar la notificación, sobre la notificación que ya creamos para nuestro Service. Para hacer esto necesitamos, en primer lugar, crear un Intent que llame a la Activity que queremos abrir. Posteriormente crearemos un PendingIntent que será el que contenga la configuración que necesitamos para que cuando pulsemos la notificación se comporte como queremos, abriendo la Activity que hemos indicado en el Intent.

Como el término PendingIntent es la primera vez que aparece por aquí, antes de crearlo vamos a explicar qué es y qué hace. Este objeto es el que permite a componentes externos a nuestra aplicación, generalmente desarrollados por terceros, que ejecuten un trozo de código que nosotros indicamos, en este caso su utilidad será la de permitir que el NotificationManager sea capaz de lanzar el Intent que nosotros hemos configurado. Para dar una idea más sencilla de lo que hace un PendingIntent, se puede entender como un Intent que se manda al sistema, pendiente de una ejecución futura, pero de la que desconocemos cuándo se producirá.

Leer más…

Programación Android, NotificationManager y NotificationCompat

En las últimas publicaciones hablamos sobre cómo crear un Service y cómo crear un BroadcastReceiver. Pero muchas veces, cuando utilicemos estos componentes, necesitaremos que se avise al usuario por medio de una notificación en la barra de notificaciones del terminal, bien al terminar un Service, bien al recibir una llamada al BroadcastReceiver.

La clase NotificationManager, en Android, es la clase que se encarga de gestionar las notificaciones que se deben mostrar en la barra de notificaciones del terminal. Para poder mostrar una notificación, por lo tanto, necesitaremos crear un objeto de esta clase y configurar los parámetros necesarios de la notificación que queremos mostrar.

Para explicar su uso vamos a crear un ejemplo en el que, al pulsar un botón, vamos a iniciar un Service, para que simulará un trabajo de 10 segundos,  y al terminar muestre una notificación. También aprovecharemos el ejemplo de la publicación del BroadcastReceiver para generar una notificación cada vez que pongamos a cargar el terminal.

Leer más…

Programación Android, Service

Un Service, o servicio, es un componente que realiza una tarea en background, sin que exista interfaz gráfica que interactúe con el usuario, y por lo tanto no tiene que cumplir con el ciclo de vida de las aplicaciones.

Generalmente un servicio se va a crear para realizar una actividad repetitiva, o que necesita realizar operaciones que necesitan bastante tiempo, como podría ser una descarga de un archivo, sincronizar datos de la apliación, etc.

Android ya nos ofrece el uso de diferentes servicios del sistema, a través de clases Manager específicas, a las que se accede a través del método getSystemService(String name), por ejemplo:

AlarmManager manager = (AlarmManager) getSystemService(String name);

Hay que tener en cuenta que los servicios, como cualquier otro objeto de la aplicación, corren sobre el proceso que lo ha creado (a menos que se indique lo contrario), y que no es un nuevo hilo. Esto quiere decir que si necesitamos que el servicio realice una acción con mucha carga de trabajo o que pueda bloquear el sistema, tendremos que crear un nuevo hilo dentro de nuestro servicio para realizar la tarea y evitar así los ANRs (Application Not Responding errors). Para más información consultar Processes and Threads.

Un servicio realiza dos tareas muy sencillas:
Leer más…