Nunca consegui descobrir como o Android se lembra da sua última localização conhecida. Parece lembrar a localização de várias horas atrás, mas não alguns segundos atrás. Eu acho que é melhor dar um exemplo do que quero dizer.
Estive recentemente na área da baía. Eu estava usando mapas do Google no meu Android e, por acaso, eu estava no campus do Google em Mountain View. Eu estava usando mapas com o GPS ativado e, depois de um tempo, obtive uma trava de GPS adequada que eu costumava navegar pela área.
Quando voltei a São Francisco, mais tarde, estava usando-o para percorrer a cidade. Toda vez que eu ligava os mapas, ele colocava minha localização novamente em Mountain View. Cerca de 10 segundos depois, após o bloqueio do GPS, eu obtive minha localização real. Se eu desligasse e ligasse o telefone alguns segundos depois, acontecesse a mesma coisa - ele acha que estou em algum lugar que estava horas antes e depois entra em contato com minha localização real. Isso acontece o tempo todo - lembrando onde eu estava horas atrás, não onde estava alguns momentos atrás. Uma vez que estive em uma área por um certo período de tempo, isso agora se torna o novo "último local de conhecimento".
Por que, depois de obter um bloqueio GPS preciso, o Android não registra isso como o "último local conhecido" em vez de um anterior?
fonte
Entendo que o Android usa atualizações de localização de tipo granular e grosso e essas atualizações também podem ter métricas de qualidade diferentes. Pode ser que o aplicativo Google Maps não tenha sinal GPS e Wifi por tempo suficiente no seu novo local para ter uma qualidade alta o suficiente para ser o último local conhecido.
Os documentos do desenvolvedor em http://developer.android.com/guide/topics/location/obtaining-user-location.html fornecem alguns exemplos de modelos para obter locais de usuários que podem fornecer informações sobre como ele funciona. Mas acho que o Google Maps, e provavelmente outros mapas, fazem suas próprias coisas.
fonte