>
Tenho uma thead dentro de um serviço que fica executando um loop de um em um minuto, esta funcionando perfeitamente enquanto o celular não
entra em standby. ou seja se ficar muito tempo sem mexer nele o serviço para de funcionar e volta somente quando executo alguma tarefa no celular.
O serviço esta entrando em standby e não funciona.
Alguem sabe me dizer alguma coisa a respeito, preciso que o serviço não pare de funcionar.
Obrigado.
O Alarm Manager mantém um bloqueio que mantém a CPU funcionando (CPU wake lock) enquanto o método OnReceive do receiver receptor do alarme está sendo executado. Isso garante que o telefone não vai dormir (sleep) até ter terminado de manusear o broadcast. Uma vez que o OnReceive () retorne, o Alarm Manager libera esse bloqueio. Isso significa que o telefone em alguns casos, entra em sleep assim que o seu OnReceive () é concluído. Se o seu Receiver do alarme chama o Context.startService (), é possível que o telefone possa entrar em sleep antes de o serviço solicitado seja iniciado. Para evitar isso, o seu BroadcastReceiver e o Service precisam implementar uma política separada de wake lock para garantir que o telefone continue funcionando até que o serviço esteja disponível.
Política de wake lock
Para isso, usamos o serviço do PowerManager. No exemplo mantemos a CPU rodando para executar um serviço. Essa opção é perfeita para o caso devido ao fato de que a CPU ficará rodando mesmo que o usuário aperte a tecla power.
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wl.acquire();
//
// coloque aqui o seu código
//
wl.release();