停止核心位置更新,然后使用计时器重新启动它们
Posted
技术标签:
【中文标题】停止核心位置更新,然后使用计时器重新启动它们【英文标题】:Stop Core Location updates then restart them with a timer 【发布时间】:2011-02-11 12:07:29 【问题描述】:我想知道是否有人可以指出(或粘贴)一些代码来处理关闭核心位置更新以节省电量。
据我了解,您应该在获得所需准确度的读数后立即停止核心位置更新。如果您在一段时间后没有获得良好的准确度读数,您还应该停止更新(可能使用计时器)。每次停止更新时,您应该触发一个计时器(大约 60 秒)以重新启动 Core Location 并获得新的读数。
是否有执行所有这些操作的 Apple 代码? LocateMe、TaggedLocations 和 Locations 示例代码似乎没有这样做。
【问题讨论】:
【参考方案1】:LocateMe 示例包含您需要的代码。您只需要创建第二个 Selector 即可触发。 LocateMe 在它的 setup 方法中调用了以下...
[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。
【讨论】:
我现在正在查看该代码,它有很多我想要的东西。计时器并不是我所需要的,但足以让我开始。谢谢!以上是关于停止核心位置更新,然后使用计时器重新启动它们的主要内容,如果未能解决你的问题,请参考以下文章
电脑连接无线网运行半小时左右自动断网,只要重新启动能恢复网络连接、求大神分析原因及解决方案!拜谢