postDelayed () en un servicio

Estoy tratando de reiniciar el servicio desde dentro de unos minutos. Mi código se ve así (dentro delonStartCommand(...))

Looper.prepare();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(BackgroundService.this, BackgroundService.class);
                startService(intent);
            }
        }, 3 * 60000);

El servicio se está ejecutando en primer plano mientras se ejecuta este código, pero no parece llamaronStartCommand(...) . ¿Hay alguna otra forma de reiniciar el servicio desde dentro de unos minutos?

UPD: descubrí que en realidad reinicia el servicio, pero no en un momento dado (puede tomar hasta 30 minutos en lugar de 3). Así que ahora la pregunta es cómo hacer que se reinicie en consecuencia

Respuestas a la pregunta(3)

Su respuesta a la pregunta