Servicio que no se ejecuta por la noche.

  • Respuestas:0
Antonio Perez
  • Posts del Foro: 1

18 oct. 2013 10:18:25 vía Web

He desarrollado una aplicación que me permite hacer una serie de tareas en un horario determinado. Grabo en la base de datos SQLite los períodos en que quiero que realize esas tareas o que deje de hacerlas. Supongamos que quiero que no se realize una tarea entre las 23:00 y las 07:00. El programa está ejecutándose como un servicio en segundo plano y se activa si el usuario lo selecciona.

La tarea funciona perfectamente, pero si lo dejo por la noche el teléfono, a la mañana siguiente la tarea no me ha funcionado. Por alguna razón que se me escapa deja de ejecutarse la tarea por las noches. Paso parte del código:

Calendar calendario;
private String cadenaHora;
private String cadenaMinuto;
private String cadenaSegundo;
private int miHora;
private int miMinuto;
private int miSegundo;

calendario = Calendar.getInstance();
miHora = calendario.get(Calendar.HOUR_OF_DAY);
miMinuto = calendario.get(Calendar.MINUTE);

//Ejecutamos la acción sólo a la hora y los cinco segundos después
//para que no lo esté ejecutando contínuamente durante 60 segundos
miSegundo=calendario.get(Calendar.SECOND);

//Formateo el resultado de la hora
fmt = new DecimalFormat("00")


cadenaHora = fmt.format(miHora);
cadenaMinuto = fmt.format(miMinuto);
cadenaSegundo=fmt.format(miSegundo);


Todo esto está dentro de un método que se repite cada segundo de la forma siguiente:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handler = new Handler();

//Arrancamos el contador casa segundo
handler.postDelayed(updateTimerThread, 1000);
return START_STICKY;

}

private Runnable updateTimerThread = new Runnable() {
public void run() {
handler.postDelayed(this, 1000);
contador();
}
};


CONTADOR() es el método donde realizo lo que quiero que se haga o no y, como dije, está en una clase que extiende de servicio. Cada segundo comprueba que la hora de empezar y terminar coincida con la hora del sistema y, si es así, que lo haga.

Funciona, pero por las noches no me lo hace. Me he vuelto loco para comprobar que tengo algo mal pero no es así. Como digo funciona perfectamente pero no lo hace por las noches. Quizás hay algo que se me está pasando y no lo encuentro o hay algo del sistema que no controle que deba saber.

¿Alguna sugerencia?

Gracias por atenderme.

Contestar