Android: Envie dados de localização em segundo plano periodicamente (a cada 30 segundos) e peça ao servidor novos dados
Cenário:
Poste no servidor para obter novos dados em segundo plano a cada 30 segundos por um longo período, ou seja, 12 horas. Os dados de localização precisam ser enviados junto com isso.
Implementação Atual;
Classe de serviço;
Ouvinte de localização com intervalo de 30 segundos que define os valores de longitude e latitude para duas variáveis locaisO gerenciador de alarmes dispara pendente Intent a cada 30 segundos para um receptor de broadcast.Receptor de difusão inicia um IntentService com variáveis de localização nos extras.O IntentService publica a localização e solicita novos dados do servidor.IntentService envia a resposta do servidor de volta para a classe de serviço principal via receptor de broadcast.
Classe de serviço starts_sticky para garantir a reinicialização pelo sistema operacional.Eu tentei algumas variações diferentes;
Eu tentei usar um manipulador e executável para lidar com o mecanismo de tempo para postar no servidor, no entanto, o tempo postDelay passou de 2 minutos para 7 minutos quando o dispositivo está dormindo.
Além disso, tentei disparar o IntentService diretamente do gerenciador de alarmes, mas não consegui alterar os extras do PendingIntent com as variáveis de local mais atualizadas.
Questões;
A implementação atual é o caminho a percorrer?
A rota do GCM do google seria muito mais benéfica?
Como você pode testar vigorosamente a classe de serviço, especialmente no que diz respeito à recuperação do sistema operacional matando-o?
Desde já, obrigado.