我想知道是否有人可以指出(或粘贴)一些代码来处理“核心位置”更新以节省功耗。
据我了解,一旦获得所需的准确性,您应该立即停止核心位置更新。如果一定时间后仍无法获得较高的准确度,则还应停止更新(大概使用计时器)。每次停止更新时,都应该触发一个计时器(大约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。