postDelayed, CountDownTimer não executam no tempo certo

Ola, estou com um problema em tentar executar loops de tempo perfeito em um serviço.
Tenho o seguinte problema, chamar uma função a cada N tempo(num loop) que no meu caso seria mandar a localização, bem, esse loop funciona no tempo perfeito que defini de a cada 50s, quando esta conectado no carregador ou com a tela ligada, mas quando esta com a tela desligada e desconectado do carregador, o loop se ativa em tempos aleatórios de 2, 4, 10 minutos …, não tenho ideia do que pode ser isso.

Dispositivo testado com problema
Galaxy j5
Android 6.0.1

em outras versões de android, esse loop funciona perfeito em todas as situações.

Abaixo os 2 tipos de tentativa que tentei,

( savePositionOnDatabaseAndSendToSocket ) , manda a localização com a hora atual.

//com Runnable

Runnable sendLocationLoopRunnable = new Runnable() {

    @Override
    public void run() {
        if(mLocation != null){
            savePositionOnDatabaseAndSendToSocket();
        }

        mServiceHandler.postDelayed(this,50000);
        }
};

// Com CountDownTimer
CountDownTimer coutTimer = new CountDownTimer(86400000,50000) {

    @Override
    public void onTick(long millisUntilFinished) {
        if(mLocation != null){
            savePositionOnDatabaseAndSendToSocket();
        }
    }

    @Override
    public void onFinish() {

    }
};

Log observado no servidor.

// Desconectado e tela apagada.
2018-02-25 17:21:03
2018-02-25 17:22:34
2018-02-25 17:24:44
2018-02-25 17:26:20
2018-02-25 17:28:14
2018-02-25 17:30:04
2018-02-25 17:32:03

// conectado ou tela acesa
2018-02-25 17:33:01
2018-02-25 17:33:51
2018-02-25 17:34:41
2018-02-25 17:35:31
2018-02-25 17:36:21
2018-02-25 17:37:11
2018-02-25 17:38:01
2018-02-25 17:38:51
2018-02-25 17:39:41
2018-02-25 17:40:31