我想知道是否有人可以指出(或粘贴)一些代码来处理“核心位置”更新以节省功耗。

据我了解,一旦获得所需的准确性,您应该立即停止核心位置更新。如果一定时间后仍无法获得较高的准确度,则还应停止更新(大概使用计时器)。每次停止更新时,都应该触发一个计时器(大约60秒)以重新启动Core Location并获取新的读数。

有Apple代码可以完成所有这一切吗? LocateMe,TaggedLocations和Locations示例代码似乎没有实现。

最佳答案

LocateMe示例包含您所需的代码。您只需要创建第二个选择器即可触发。
LocateMe在其设置方法中调用了以下内容...

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


它说,经过一定时间(kSetupInfoKeyTimeout),请使用NSString =“ Timed Out”的参数调用stopUpdatingLocation方法。
stopUpdatingLocation方法内部,调用[locationManager stopUpdatingLocation]告诉CoreLocation停止。

因此,您需要做的就是添加另一个这样的选择器...

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


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

10-08 06:58