2011-03-30 87 views
8

CLLocationManager distanceFilter屬性是否執行任何操作以在要求的距離提出請求之間節省電池壽命/用電量。我不認爲它,但我只是想檢查,我仍然應該調用stopUpdatingLocation,而不是讓它運行。CLLocationManager distanceFilter是否做任何事情來節省電力?

我在這裏找到一個答案,建議電話撥打它的輪詢(直到達到所需距離),從而節省電量。但另一方面,似乎暗示即使檢查期望的距離也需要天線處於活動狀態,並且因此節省了很少的功率。

當前當我需要位置詳細信息我明確地做了startUpdatingLocation,在將stopUpdatingLocation消息發送到CLLocationManager之前檢查合適的位置。

回答

6

有沒有什麼直接記錄(在distanceFilter屬性),以表明這種情況。如果您關心電池壽命並給予用戶體面的體驗,您絕對應該致電stopUpdatingLocation。在我自己的開發應用程序的經驗中,我從來沒有看到使用更大的值爲distanceFilter時電池壽命有任何改善 - 也許如果它做了任何事情的收益是太小,無法注意到。

我相信distanceFilter的重點不是爲了節省電力,而是爲了讓您控制在您的應用不需要固定位置數據流時獲得的回調數量。

這就是說,我懷疑它確實涉及到電源需求。當然,其相關屬性distanceAccuracy對電源管理造成一定的影響 - 按照蘋果的文檔:

設置位置事件所需的精度一公里給位置管理的靈活性,以關閉GPS硬件和單純依靠WiFi或小區無線電。這可以導致顯着的節能。

所以我個人懷疑distanceFilterdistanceAccuracy都以某種方式影響力量。我想問題在於,可測量的效果會因設備而異,可能會從操作系統版本到操作系統版本。所以以任何有意義的方式進行量化都非常困難。

5

一個蘋果樣本代碼中的doc美專,設置較大的distanceFilter不幫助節省電力:

http://developer.apple.com/library/ios/#samplecode/LocateMe/Listings/ReadMe_txt.html

...此外,distanceFilter不會影響硬件的活動 - 即通過設置更大的距離濾波器不存在功率節省,因爲硬件繼續獲取測量值。這隻會影響這些度量是否傳遞給位置管理者的委託。只有關閉位置管理器才能保存電源。

相關問題