停止Core Location更新,然后使用计时器重新启动它们

时间:2010-04-23 12:17:28

标签: iphone objective-c cocoa-touch core-location power-saving

我想知道是否有人可以指示(或粘贴)某些代码来处理关闭Core Location更新以节省电量。

据我所知,您应该在获得所需精度后立即停止核心位置更新。如果您在一段时间后没有获得良好的准确度读数,您还应该停止更新(可能使用计时器)。每次停止更新时,都应该启动计时器(大约60秒)以重新启动Core Location并获得新的读数。

是否有Apple代码可以完成所有这些操作? LocateMe,TaggedLocations和Locations示例代码似乎没有这样做。

1 个答案:

答案 0 :(得分:3)

LocateMe示例包含您需要的代码。你只需要创建第二个选择器来开火。 LocateMe在其设置方法中调用以下内容...

    [self performSelector:@selector(stopUpdatingLocation:) withObject:@"Timed Out" afterDelay:[[setupInfo objectForKey:kSetupInfoKeyTimeout] doubleValue]];

它表示在一定时间后(kSetupInfoKeyTimeout),请调用stopUpdatingLocation方法NSString =“Timed Out”的参数。 在stopUpdatingLocation方法中,调用[locationManager stopUpdatingLocation]告诉CoreLocation停止。

所以,你需要做的只是添加另一个选择器......

[self performSelector:@selector(timeToRestartCoreLocation) afterDelay: 60];

stopUpdatingLocation方法内部,该方法将在60秒后调用timeToRestartCoreLocation方法。然后在timeToRestartCoreLocation方法中,调用[locationManager startUpdatingLocation]再次启动CoreLocation。