5

我一直在尝试寻找任何方法来优化基于位置的 iPhone 应用程序的性能,并且看到有人提到您可以通过启动和停止 CLLocationManager 来强制更新位置。我需要我能获得的最佳准确度,而在我的情况下,用户可能希望在他们四处走动时每隔几秒(比如 10 秒)看到一次更新。我已经相应地设置了过滤器,但我注意到有时我在很长一段时间内都没有在设备上获得任何更新。

我正在测试以下方法,该方法在经过固定时间间隔时强制更新(我使用的是 20 秒)。我的直觉告诉我,这真的不会帮助我向用户提供更准确的更新,而让 CLLocationManager 一直运行可能是最好的方法。

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

我的问题是——从 CLLocationManager 强制更新真的可以提高核心位置性能吗?会影响性能吗?如果我在 GPS 接收良好的开阔场地外,这会有帮助吗?有没有人有尝试这个的经验?

在此先感谢,史蒂夫

4

2 回答 2

0

我也在尝试优化应用程序中的“靠近我”功能 - 我发现以下 SO 帖子信息很有用:链接文本

于 2010-04-23T08:57:46.353 回答
0

如果您正确设置了所需的精度和距离过滤器,那么您可能不会得到任何更新,因为您的用户或测试没有移动到足以触发更新的程度。就像@Nate 的评论所说,如果您将其设置为 best 或 bestForNav,您就有更好的机会获得更多更新。

关闭位置管理器的真正原因实际上是为了节省电池。大多数使用该设备进行 GPS 和导航的用户都知道要保持其插入状态。如果您没有将位置用于类似的事情,您最好获取您的位置并将其关闭以节省电池,直到您需要另一个位置更新. 这可以通过计时器或块来完成。最主要的是考虑如何操作并尽可能节省电池。

于 2012-11-11T13:47:51.993 回答