它有助于还是伤害?

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

我正在测试以下方法,这会在固定时间间隔过去时强制进行更新(我正在使用20秒)。 我的直觉告诉我,这实际上无法帮助我为用户提供更准确的更新,而只是让CLLocationManager始终运行可能是最好的方法。

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

我的问题是 - 是否强制更新CLLocationManager实际上改善了核心位置性能? 它会伤害性能吗? 如果我在一个GPS接收良好的露天场地外面,这会有帮助吗? 有没有人有这方面的经验?

在此先感谢史蒂夫


我还试图在应用程序中优化“靠近我”功能 - 我发现以下SO发布信息有用:链接文本


如果你有你想要的精度和距离过滤器设置正确,那么你可能没有得到任何更新,因为你的用户或测试没有足够的动作触发更新。 就像来自@Nate的评论所说,如果您将其设置为best或bestForNav,那么您可以获得更多更新。

关闭您的位置经理的真正原因是为了节省电池。 大多数正在使用GPS和导航设备的用户都知道将其保持插入状态。如果您没有使用位置信息来获取位置信息,则最好将位置关闭并关闭以节省电量,直到您需要其他位置更新。 这可以通过定时器或块来完成。 最主要的是考虑如何操作并尽可能节省电量。

链接地址: http://www.djcxy.com/p/20335.html

上一篇: does it help or hurt?

下一篇: Singletons: good design or a crutch?