Serviço Android com retornos de chamada locationListener

Eu tenho uma aplicação android. Com base na localização geográfica atual do usuário, desejo buscar alguns dados remotos em segundo plano e armazená-los. Minha implementação é:

Em um intervalo específico, um alarme aciona meu serviço. O serviço usa uma classe anônima para consultar o local atual e registra um retorno de chamada locationListener. Na chamada de onLocationChanged (), inicio a busca remota de dados do servidor.

No entanto, uma vez que meu serviço é concluído registrando o ouvinte de localização usando a classe anonymos, ele retorna como esperado; pois ele não espera o retorno de chamada antes de terminar. Como o retorno de chamada leva algum tempo e faz uma chamada quando o serviço já retornou, gera um erro dizendo:

java.lang.RuntimeException: Handler{43e82510} sending message to a Handler on a dead thread

O que é bastante compreensível. Uma solução rápida para mim agora é que eu posso usar getLastKnownLocation a partir de locationManager, pois isso não responde de volta por retorno de chamada; mas e se eu quiser o local mais recente agora, em um serviço e não em uma atividade? Como posso esperar o retorno da chamada e impedir que meu serviço retorne.

Além disso, em que ponto lastKnownlocation é atualizado? Sempre que o GPS registra um novo local; ele atualiza isso? O que eu quero saber é que, se não for o mais recente, ainda pode ser fechado para o mais recente? Como não vi uma opção no emulador do Android para configurar o período entre as atualizações subseqüentes.

Qualquer ajuda é muito apreciada. Felicidades

questionAnswers(1)

yourAnswerToTheQuestion