Fiable tarea de fondo de repetición en android

Estoy tratando de ejecutar una tarea de fondo que se ejecuta cada minuto o así para una aplicación de Android, pero estoy luchando para asegurar que la tarea realmente se ejecuta cada minuto. He intentado una variedad de acercamientos de usar SystemClock.sleep () al alarmManager (alarma que repite y una alarma fija) pero parece que a menos que el dispositivo esté cargando cualquier clase de sistema que repite tiene una tarifa de repetición variable una vez que el dispositivo es desenchufado. ¿Hay alguna forma de ejecutar un servicio consistente de repetición constante?

¿Ha implementado Timer ? Funciona muy bien para lo que yo lo uso, pero de nuevo no me he preocupado por la precisión en absoluto. 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;)

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 se activará 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 despierta para que su código no puede obtener tiempo de ejecución de inmediato.

  • Obtenga un WakeLock de PowerManager y utilice lo que desee para programar su código (Timer, Handler, etc.). Esto obliga a que el teléfono nunca duerma, lo que significa que es más probable que ejecute su código casi exactamente cuando lo solicite.

Ambos enfoques definitivamente drenarán la batería del teléfono rápidamente. Normalmente, el teléfono puede dormir por 4 o incluso 9 minutos entre las vigilia, por lo que despertar una vez por minuto es un gran cambio de eso.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.