2010-05-06 34 views
1

是否有可能,android會在重啓後清除最後一個已知的位置? 昨天我的代碼工作得很好,但今天重新啓動手機(AND模擬器)後,似乎.getLastKnownLocation(見下文)返回null,這導致nullPointerException ... 你能證實嗎? 我該如何避免這個問題?我拼命地尋找答案Android重置後的位置重置? - >嚴重問題

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

...

Location locUser = lm 
    .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
posUser = new GeoPoint((int) (locUser.getLatitude() * 1E6), 
(int) (locUser.getLongitude() * 1E6)); 

將是巨大的,如果有人coult給我一個提示或指出我的錯誤。

尼斯的問候,Poeschlorn

回答

2

getLastKnownLocation()的調用不會阻塞 - 這意味着它會返回null如果沒有位置是當前可用的,這是一個設備重新啓動後,極有可能。如果Android在用戶關閉設備時緩存當前位置,我會感到驚訝,因爲在設備重新開機之前設備可能會移動。

您需要將LocationListener傳遞給requestLocationUpdates() method,而這會讓您對您的位置進行異步更新。

看一看this question for an example of using a LocationListener

+0

嗨戴夫, 你指出什麼似乎是合乎邏輯的;-) 我已經實現了一個工作的Locationlistener,但它只更新了1秒1-5(參數)。 在上面的代碼被執行之前,我怎麼能告訴它刷新? – poeschlorn 2010-05-06 13:32:23

+0

我不認爲你可以強迫它刷新。如果GPS需要一段時間才能鎖定,getLastKnownLocation()將返回null,並且您的應用必須處理這種情況。 – 2010-05-06 14:36:08