【问题标题】:How do startMonitoringSignificantLocationChanges and startUpdatingLocation effect one-another?startMonitoringSignificantLocationChanges 和 startUpdatingLocation 如何相互影响?
【发布时间】:2012-06-27 14:56:09
【问题描述】:

如果我在 startMonitoringSignificantLocationChanges 运行时调用 startUpdatingLocation 会发生什么?是否会停止显着位置更改监视?如果我然后stopUpdatingLocation 将显着LocationChange 监控继续或重新启动?

我找不到涵盖这两种监控位置方式之间相互作用的文档。

【问题讨论】:

  • 嘿,你有没有找到更多关于这个的信息?尤其是交互部分。如果另一个启动,iOS 是否会停止运行?
  • 你知道在backgroundState中得到startMonitoringSignificantLocationChanges后能不能做startUpdatingLocation
  • 很抱歉,我已经很多年没用过这个API了。你为什么不问一个新问题?

标签: ios ios5 core-location cllocationmanager


【解决方案1】:

标准位置服务和重大位置变更服务可以一起使用。引用the API Reference:

如果同时启用两种定位服务,它们会提供 使用同一组委托方法的事件。

同时使用这两种服务的一个很好的理由是,标准服务可以提供更高的准确性,而重要的位置更改服务即使在您的应用暂停时也能正常工作。

【讨论】:

    【解决方案2】:

    我认为接受的答案并不能真正回答所提出的问题。我做了一些测试,如果你愿意,你可以同时使用它们,它们不会相互抵消。

    为什么有人想同时使用这两者?因为startMonitoringSignificantLocationChanges 无需任何后台模式即可将应用从暂停或终止中唤醒。因此,如果您同时运行两者,您可以获得准确的前台位置更新和显着的位置更改后台位置更新。

    当然,您可以在进入后台时切换方法,但是 a) 这不是问题 b) 它添加了不需要的逻辑

    当然,如果同时运行这两种方法会消耗更多电池,这是一个问题,但我敢打赌,它不会。

    【讨论】:

      【解决方案3】:

      它们不能同时使用。要么是,要么因为它们都将标题和位置更改传递给同一个委托方法。

      locationManager:didUpdateToLocation:fromLocation

      它们在更改的频率和准确性(以及所使用的扩展硬件和功耗)方面有所不同。作为开发人员,您需要根据您的用例决定哪个是最好的

      我需要在不同的时间使用这两种方法。当我从一个切换到另一个时,我设置了一个可以在我的委托中引用的标志,以便我知道更新的类型。

      【讨论】:

      • 谢谢。这正是我目前正在做的事情。我已经用我自己的服务包装了 CLLocationService,我用它来为正在使用的服务类型设置标志。我只是对两者如何互动感兴趣。有趣的是,Apple 文档完全忽略了这个主题。
      • 在最新的文档中,Apple 确实提到它们可以同时运行,但没有提供任何交互细节。 “如果同时启用两种定位服务,它们将使用相同的委托方法集传递事件。” developer.apple.com/reference/corelocation/cllocationmanager
      猜你喜欢
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多