2

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

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

是否有执行所有这些操作的 Apple 代码?LocateMe、TaggedLocations 和 Locations 示例代码似乎没有这样做。

4

1 回答 1

3

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。

于 2010-04-23T14:35:05.507 回答