Ejecutar un servicio en el fondo para siempre ..? Androide

Estoy haciendo una investigación de la batería de consumo en el teléfono Android. Quiero ejecutar una verificación de la batería cada 10 minutos hasta que la batería muere totalmente. He estado teniendo problemas para hacer que funcione.

En mi primer intento, utilizo un temporizador en una clase de servicio, y programo la verificación de la batería cada 10 minutos. Pero pronto me encontré con que el servicio se detuvo cuando la pantalla se apaga.

Entonces intento utilizar AlarmService, utilizo una llamada de alarma para despertar mi servicio cada 10 minutos y comprobar el nivel de la batería y excepto los datos a un archivo en el sdcard. Funciona con la pantalla apagada. Sin embargo, sólo tengo datos de 9 horas … parece que el AlarmService parada en algún momento después de varias horas. No sé por qué es así, ¿el sistema lo ha matado por problemas de memoria?

Así que mi pregunta es, ¿alguien ha escrito algún servicio para ejecutar (como siempre) en el fondo antes? ¿Cómo lo haces y te agradecería mucho por un código de ejemplo?

Actualmente estoy leyendo algunos mensajes diciendo que hay un bloqueo parcial de la estela que puedo usar para mantener el servicio vivo. ¿Es esta la forma correcta de hacerlo?

Muchas gracias y espero poder obtener algunas respuestas útiles aquí.

En mi primer intento, utilizo un temporizador en una clase de servicio, y programo la verificación de la batería cada 10 minutos. Pero pronto me encontré con que el servicio se detuvo cuando la pantalla se apaga.

Probablemente no WakeLock un WakeLock , así que el dispositivo se quedó dormido.

Parece que el AlarmService se detiene en algún momento después de varias horas

Lo dudo bastante.

Así que mi pregunta es, ¿alguien ha escrito algún servicio para ejecutar (como siempre) en el fondo antes?

No es posible crear un servicio que se ejecutará para siempre. Debería ser posible crear una tarea programada a través de AlarmManager que se invocará "para siempre".

Actualmente estoy leyendo algunos mensajes diciendo que hay un bloqueo parcial de la estela que puedo usar para mantener el servicio vivo .. ¿es esta la forma correcta de hacerlo?

No estoy seguro de lo que "es". Pero, si desea mantener el dispositivo despierto – ya sea para su primer enfoque o simplemente mientras está haciendo el trabajo desencadenado por un AlarmManager – que necesita para celebrar un WakeLock .

Aquí está un proyecto que hace casi exactamente lo que usted describe para el AlarmManager , menos comprobando el nivel de la batería, pero usando un WakefulIntentService para asegurar el dispositivo permanece despierto. Si no puede obtener este código para que se ejecute hasta que la batería se apague, únase al Grupo Google cw-android e informe de sus hallazgos, y lo echaré un vistazo.

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