2010-10-04 11 views
11

Estoy escribiendo una aplicación que necesita revisar periódicamente el servidor en busca de mensajes nuevos y notificar al usuario. He visto algunos ejemplos usando AlarmManager para conectar con un BroadcastReciever que parece ser lo correcto, pero parece que no funciona.android: ejecutando una tarea en segundo plano usando AlarmManager

¿Alguien me puede mostrar un tutorial paso a paso para este tipo de cosas (alarma repetitiva que desencadena algún tipo de código de fondo que dispara una notificación)?

TIA

+0

nos muestran lo que usted ha intentado, con detalles sobre exactamente cómo está fallando. –

+0

Mis tutoriales están en libros (lo siento!). Tal vez la página 'WakefulIntentService' y el proyecto de demostración ayuden: http://github.com/commonsguy/cwac-wakeful – CommonsWare

+0

¡Comparte el código por favor, me estoy muriendo! –

Respuesta

31

Aquí está un ejemplo completo: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/

El patrón de este ejemplo se utiliza, y uno que he encontrado que parece funcionar bien, es el uso de un receptor de inicio para configurar el AlarmManager (y por supuesto también comprobar para iniciar el sondeo de su principal Actividad también, para el caso en que su aplicación está instalada y el sistema no se inicia) y tienen la AlarmManager enviar un Intención para otro receptor: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealBootReceiver.java

y luego desde el AlarmReceiver iniciar una IntentService: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealAlarmReceiver.java

Desde su IntentService luego hacer su llamada de red para sondear los datos, o lo que tiene que hacer. IntentService pone automáticamente el trabajo en un subproceso de fondo, que es muy práctico: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealService.java

Verificar la documentación para estas clases también, en una gran cantidad de allí.

La advertencia con este ejemplo es que no acuerdo con la brecha de bloqueo raíz (la excelente código CommonsWare hace eso, si lo necesita), pero se le puede dar más ideas sobre cómo abordar potencialmente el " encuesta utilizando AlarmManager y el Servicio "cosas.

ACTUALIZACIÓN: el código ya está aquí: https://github.com/charlieCollins/android-in-practice

+0

Gracias, esto fue muy útil. – rpcutts

+0

Esta respuesta parece bastante cercana a lo que hice. Debería funcionar para ustedes, amigos. – mtmurdock

+2

Es posible que desee colocar WakeLock en el Servicio de atención para garantizar que el teléfono no se quede dormido inmediatamente después de que se haya ejecutado onReceive. Raspe eso, solo lea su nota de advertencia ... – charroch

Cuestiones relacionadas