Handler postDelayed retrasó más tiempo según lo configurado

Intento desarrollar un pitido de temporizador simple, que suene cada hora. Para el momento, uso un servicio y un controlador, aquí el ejemplo:

    void onStart(...){
        handler.postDelayed(timerRunnable, ONE_HOUR);
    }

    private Runnable timerRunnable = new Runnable() {

    @Override
        public void run() {
               ...beep
               handler.postDelayed(timerRunnable, ONE_HOUR);
        }
    };

perocorrer(l método @ se activará de forma no determinista, creo que depende del uso actual del dispositivo.

He intentado el mismo escenario con TimerTask y con la implementación de subprocesos 'manual', pero con el mismo resultado no determinista.

Respuestas a la pregunta(2)

Su respuesta a la pregunta