强制CLLocationManager更新 - 它有帮助还是有害?

时间:2010-04-18 14:28:39

标签: iphone gps cllocationmanager core-location

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

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

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

我的问题是 - 从CLLocationManager强制更新实际上是否提高了核心位置性能?这会影响性能吗?如果我在一个有良好GPS接收的空旷场地外面,那会有帮助吗?有没有人有尝试过的经验?

提前致谢, 史蒂夫

2 个答案:

答案 0 :(得分:0)

我也在尝试优化应用中的“靠近我”功能 - 我发现以下SO帖子信息很有用:link text

答案 1 :(得分:0)

如果您正确设置了所需的准确度和距离过滤器,那么您可能无法获得任何更新,因为您的用户或测试没有足够的移动来触发更新。就像@Nate的评论所说,如果你把它设置为best或bestForNav,你有更好的机会获得更多的更新。

关闭位置管理员的真正原因是为了节省电池电量。大多数使用该设备进行GPS和导航的用户都知道要将其插入电源。如果你没有使用位置这样的东西,你最好先获取位置并关闭它以节省电量,直到你需要另一个位置更新。这可以通过定时器或块来完成。最重要的是要考虑如何操作和尽可能多地节省电池。