2011-06-22 34 views
9

LocationManager#requestLocationUpdates允許您傳入minTime和minDistance參數。我很難決定這些數字應該是什麼,並且可以欣賞一些指導。如何決定requestLocationUpdates使用的時間間隔?

我們的應用程序不是一個turn-turn的導航應用程序;我只想顯示10個最近的興趣點。由於我顯示的是最近的10個,所以它們可能會變得有點陳舊,但是如果用戶在移動的車輛中,我想/需要更頻繁地更新它們以避免過時。

我想很多人都處於模糊要求的相同位置:「我不希望數據過於陳舊,但我不想浪費電池。」我怎樣才能將這些模糊的要求轉化爲具體的數字?

+1

這是在這裏得到的陳舊的答案 - 現在[minTime優先](http://stackoverflow.com/a/16753705/281545) - 所以它不再是無關緊要了。 –

回答

3
***<Edit>*** 
As of JellyBean, the criteria is (minTime & minDistance), so it has 
to satisfy both to return a location. 
***</Edit>*** 

根據您的問題,它的聲音,我像minTime參數無關。

你真正需要擔心的是minDistance,所以如果用戶在快速移動的車輛中,它會跟上。

如果一個人駕駛60英里/小時,他們會以每秒27米的速度行駛。

考慮到這一性判據......我要說的使用方法:

minTime = 60000 //更新每隔60秒
minDistance纔會= 90 //在快速移動的車輛,它會更新一次,大約每3秒

+0

你是怎麼想出60000的?爲什麼不更多?或更少? –

+0

這是相當隨機的。沒有「正確」的號碼,但每分鐘一次不會消耗電池,並且至少會將結果保持在一定程度。更重要的價值是距離。您需要決定的是 - 在您希望刷新數據之前,汽車可以行駛多遠?一英里?半英里?更多?減? – Matt

+1

對不起,但你必須編輯 - 現在[minTime優先](http://stackoverflow.com/a/16753705/281545) - 所以它不再是無關緊要。 –

3

已經在requestLocationUpdates docs

很好地描述可使用本 minTime和頭腦來控制的通知或新 位置的頻率度量參數。如果 minTime大於0,則 位置管理器可能會在 之間停留 mintime毫秒之間的位置更新以節省電源。如果 minDistance大於0,則只有在 設備移動minDistance米時纔會廣播 位置。爲了 頻繁獲得通知作爲 可能,同時設置參數爲0 後臺服務應該小心 有關設置足夠高的 minTime從而使設備不 通過保持 GPS或無線電臺消耗太多功率在所有的 時間。特別是,建議不要使用60000ms以下的值。

+0

「建議不要使用60000ms以下的值」對於前臺服務或僅僅是後臺服務,這是否正確? (我不是一個後臺服務。)對於不需要最高頻率的前臺服務,價值是什麼? –

+0

它的後臺服務和前臺服務。 – Sujit

+1

來自文檔的引用不再有效 –

1

我可以建議一個更好的想法,最初以更大的間隔請求更新並獲取位置。現在檢查連續位置之間的距離是否大於最小距離以區分較近的位置,將請求更新間隔更改爲較低值。同樣,如果在這個較低的時間間隔內,您計算的距離遠遠低於此值,則表示用戶未穿越車輛,然後將間隔更新爲較大的值。 要更新間隔,您必須註銷先前的監聽者,然後用新值重新註冊。

0

對於您的問題,請看PASSIVE_PROVIDER。基本上它會幫助你在任何其他應用程序可能請求更新時獲得更新。所以,您可以將其與其他提供商一起使用。

相關問題