我想知道是否有人可以指出(或粘贴)一些代码来处理关闭核心位置更新以节省电力。
据我了解,您应该在获得所需准确度的读数后立即停止核心位置更新。如果您在一段时间后没有获得良好的准确度读数,您还应该停止更新(可能使用计时器)。每次停止更新时,您应该触发一个计时器(大约 60 秒)以重新启动核心位置并获得新的读数。
是否有执行所有这些操作的 Apple 代码?LocateMe、TaggedLocations 和 Locations 示例代码似乎没有这样做。
我想知道是否有人可以指出(或粘贴)一些代码来处理关闭核心位置更新以节省电力。
据我了解,您应该在获得所需准确度的读数后立即停止核心位置更新。如果您在一段时间后没有获得良好的准确度读数,您还应该停止更新(可能使用计时器)。每次停止更新时,您应该触发一个计时器(大约 60 秒)以重新启动核心位置并获得新的读数。
是否有执行所有这些操作的 Apple 代码?LocateMe、TaggedLocations 和 Locations 示例代码似乎没有这样做。
LocateMe 示例包含您需要的代码。您只需要创建第二个 Selector 即可触发。LocateMe 在其设置方法中调用以下内容...
[self performSelector:@selector(stopUpdatingLocation:) withObject:@"Timed Out" afterDelay:[[setupInfo objectForKey:kSetupInfoKeyTimeout] doubleValue]];
它表示在一定时间后(kSetupInfoKeyTimeout),请调用stopUpdatingLocation
方法NSString =“超时”的参数。在stopUpdatingLocation
方法内部,[locationManager stopUpdatingLocation]
调用 来告诉 CoreLocation 停止。
所以,你需要做的就是添加另一个这样的选择器......
[self performSelector:@selector(timeToRestartCoreLocation) afterDelay: 60];
在stopUpdatingLocation
方法内部,它将timeToRestartCoreLocation
在 60 秒后调用该方法。然后在您的timeToRestartCoreLocation
方法中,再次调用[locationManager startUpdatingLocation]
以启动 CoreLocation。