【问题标题】:Stop Core Location updates then restart them with a timer停止核心位置更新,然后使用计时器重新启动它们
【发布时间】:2011-02-11 12:07:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: iphone objective-c cocoa-touch core-location power-saving


    【解决方案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。

    【讨论】:

    • 我现在正在查看该代码,它有很多我想要的东西。计时器并不是我所需要的,但足以让我开始。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多