2012-02-24 33 views
1

這裏是我的代碼片段:Android:如何超時GPS試圖找到一個鎖?

private class NoGpsLock implements Runnable { 
    public void run() { 
     if (gps == null) { 
     Toast toast = Toast.makeText(getApplicationContext(), "Unable to find GPS lock", Toast.LENGTH_LONG); 
     toast.show(); 
     if (locManager != null) { 
      locManager.removeUpdates(locListener); 
     } 
     } 
    } 
    } 

調用由

try { 
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DIST, locListener); 
} catch (Exception ex) { 
} 
Handler gpsHandler = new Handler(); 
gpsHandler.postDelayed(new NoGpsLock(), 15000); //15seconds 

據我瞭解,removeUpdates()應該停止接收更新的GPS。我在模擬器和2個設備上嘗試了這一點;在模擬器上,它確實會阻止應用程序接收更多位置更改。然而,在實際的設備上,「從GPS接收位置數據」圖標不斷出現並耗盡電池(我認爲這表明應用程序/手機一直在尋找位置並且無法進入,因爲我在室內) 。如何阻止GPS試圖找到一個位置?

編輯:我希望我的應用在一段時間後停止嘗試查找位置,然後可能稍後再重新啓動GPS。

回答

2

removeUpdates(locationListener)是假設停止閃爍的GPS圖標。如果不這樣做,我可以提供的最佳建議是,可能還有其他偵聽器實例仍在您的locationManager中註冊?被遺忘的for-loop可能會附加其他偵聽器實例。作爲一名蠻力開發人員,我會多次執行removeUpdates()以查看是否有任何效果。

+0

你真的很棒!我有兩個不同的聽衆,但我只使用一個。謝謝! – dee 2012-02-27 18:44:17

相關問題