2012-03-29 58 views
0

我註冊了位置更新:位置管理器getLastKnownLocation()緩存上次修復?

public void onResume() { 
    LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    List<String> providers = lm.getProviders(true); 
    for (String it : providers) { 
     lm.requestLocationUpdates(it, 0, 0, myListener); 
    } 
} 

現在將任何新的定位座標接收時的提供商緩存?換句話說,如果GPS監聽前得到了一個新的修補1秒,調用下面:

Location loc = lm.getProvider("gps").getLastKnownLocation("gps"); 

應該給我回的是最新的位置,對不對?想知道是否有供應商的任何政策可能不會返回其最新修復程序(即它收到修復程序,但由於某種原因,內部實現不會將其緩存爲最後一個已知位置,或者在它之前有一些超時被擔任了爲上次已知),

感謝

回答

1

如果選中的LocationManagerService.java源,你可以看到供應商的最後已知位置,如果啓用了位置提供更新,所以答案是肯定的。

+1

PS:您可以使用loc.getTime()獲取此修復程序的UTC時間。 – biegleux 2012-03-29 17:39:06