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.

questionAnswers(1)

yourAnswerToTheQuestion