停止核心位置更新,然后使用计时器重新启动它们

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。

【讨论】:

我现在正在查看该代码,它有很多我想要的东西。计时器并不是我所需要的,但足以让我开始。谢谢!

以上是关于停止核心位置更新,然后使用计时器重新启动它们的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:取消定时器后如何重新启动它?

骆驼运行时计时器更改

电脑连接无线网运行半小时左右自动断网,只要重新启动能恢复网络连接、求大神分析原因及解决方案!拜谢

Javascript暂停计时器困境......无法计算它

如何使用 .net 核心实体框架迁移更新表(而不是重新创建它们)

win10svn怎么重启