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