我使用LocationClient來獲得當前位置的每一分鐘:定期使用LocationClient獲取位置的最佳方式是什麼?
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(60000);
mLocationRequest.setFastestInterval(60000);
mLocationClient = new LocationClient(this, this, this);
// ... when connected:
mLocationClient.requestLocationUpdates(mLocationRequest, this);
但是我發現我的LocationListener的的onLocationChanged-方法被調用或者每60或120(或60任何其他倍數)秒(+/- 3秒)。該文檔說:
此間隔是不精確的。您可能根本沒有收到更新(如果沒有可用的位置信息源),或者您可能收到的信息比請求的要慢。 [...]
所以我知道,間隔不是確切的一分鐘。但我認爲我會在60秒結束後儘快獲得當前位置,例如75秒後。但似乎如果LocationClient無法確定位置,它會在接下來的60秒後重試。
這個假設是否正確?
如果是,解決方法是將時間間隔設置爲30秒左右,並在onLocationChanged-method中過濾掉所需的位置。但是這可能會消耗更多的電池電量。
但降低setFastInterval可以導致我的onLocationChanged方法被調用的頻率超過每60秒,這不是我想要的。 ;-)我想要的東西是:每60秒只調用一次onLocationChanged方法,但如果在60秒後沒有位置,則在獲得下一個座標時儘快調用我的方法。 – Biggie
今天我做了測試:降低FastInterval導致更穩定的60秒位置更新間隔。但是,如果在後臺運行例如「My tracks」-app,並且間隔非常短,則會導致我的應用程序的LocationListener以其FastInterval率(如預期的)進行調用。所以我必須再次過濾所需的位置以獲得我的60秒間隔。所以解決方法似乎仍然是將Interval/FastInterval設置爲低於想要的時間間隔(這是我的建議)。 – Biggie