2009-08-31 9 views
7

Estoy tratando de ejecutar una tarea en segundo plano que se ejecuta cada minuto más o menos para una aplicación de Android, pero estoy luchando para garantizar que la tarea realmente se ejecute cada minuto. He intentado una variedad de enfoques desde SystemClock.sleep() hasta AlarmManager (alarma repetitiva y alarma fija) pero parece que a menos que el dispositivo esté cargando, cualquier tipo de sistema repetitivo tiene una tasa de repetición variable una vez que el dispositivo está desenchufado. ¿Hay alguna manera de ejecutar un servicio estable que se repite constantemente?Tarea confiable de fondo repetitivo en android

+0

¿Has probado el servicio AlarmManager? –

Respuesta

3

Ha implementado Timer? Funciona muy bien para lo que lo uso, pero una vez más no me preocupa la precisión. Por lo que sé, puede variar un poco, pero lo dudo. Me parece bastante consistente.

Editar: No soy responsable de su uso responsable o irresponsable de esta instalación;)

+1

No estoy muy seguro de por qué nuestras dos respuestas justificaban un voto a la baja. – MattC

+0

Especialmente porque ambos son muy relevantes para la pregunta. – MattC

+0

El temporizador no impide dormir, y significará intervalos de activación que son mucho más grandes que un minuto si el teléfono está inactivo. – Nakedible

2

Si necesita tener un servicio que se ejecuta cada minuto, en el minuto, tiene dos opciones:

  • Utilice AlarmManager.setRepeating (RTC_WAKEUP, ...). En este caso, el teléfono se apagará, pero el RTC dentro del teléfono lo despertará cada minuto para manejar el evento repetitivo. Esto funcionará, pero no será muy exacto, ya que muchas cosas están sucediendo después de que el teléfono se active para que el código no obtenga el tiempo de ejecución de inmediato.

  • Obtenga un WakeLock de PowerManager y use lo que quiera para programar su código (temporizador, controlador, etc.). Esto obliga al teléfono a no dormir nunca, lo que significa que es muy probable que ejecute su código casi exactamente cuando lo solicita.

Ambos enfoques definitivamente agotarán la batería del teléfono rápidamente. Normalmente, el teléfono puede dormir durante 4 o incluso 9 minutos entre las vigilias, por lo que despertarse una vez por minuto es un cambio grande.