2010-04-18 34 views
5

我一直在試圖找到任何方法來優化我的基於位置的iPhone應用程序的性能,並且看到一些人提到您可以通過啓動和停止CLLocationManager來強制執行位置更新。我需要獲得最佳的準確性,而我的情況下,用戶可能會希望在他們四處走動時每隔幾秒鐘(例如10秒)看到更新。我已經設置了相應的過濾器,但是我注意到有時候我有一段時間沒有在設備上進行任何更新。強制CLLocationManager更新 - 幫助還是傷害?

我測試下面的方法,當固定的時間間隔過去(我使用20秒)時強制更新。我的直覺告訴我,這實際上無法幫助我爲用戶提供更準確的更新,而只是讓CLLocationManager始終運行可能是最好的方法。

- (void)forceLocationUpdate { 
    [[LocationManager locationManager] stopUpdates]; 
    [[LocationManager locationManager] startUpdates]; 
    [self performSelector:@selector(forceLocationUpdate) withObject:nil afterDelay:20.0]; 
} 

我的問題是強迫從CLLocationManager更新實際上改善核心位置性能?它會傷害性能嗎?如果我在一個GPS接收良好的露天場地外面,這會有幫助嗎?有沒有人有這方面的經驗?

由於提前, 史蒂夫

+0

設置你的CLLocationManager時,你應該將'desiredAccuracy'標準設置爲'kCLLocationAccuracyBestForNavigation',在iOS 4+中可用。然後,讓OS優化。 – Nate 2012-05-23 03:33:03

回答

0

我也想在一個應用程序來優化「靠近我」功能 - 我發現下面的SO發佈有用的信息:link text

0

機會是,如果你有您所需的準確度和距離過濾器設置正確,那麼您沒有得到任何更新,因爲您的用戶或測試尚未移動到足以觸發更新。就像來自@Nate的評論所說,如果您將其設置爲best或bestForNav,那麼您可以獲得更多更新。

關閉您的位置管理器的真正原因實際上是爲了節約電池。大多數正在使用GPS和導航設備的用戶都知道將其保持插入狀態。如果您沒有使用位置信息來獲取位置信息,則最好將位置關閉並關閉以節省電量,直到您需要其他位置更新。這可以通過定時器或塊來完成。最主要的是考慮如何操作並儘可能節省電量。