同时使用 startUpdatingLocation 和 startMonitoringSignificantChanges?

Posted

技术标签:

【中文标题】同时使用 startUpdatingLocation 和 startMonitoringSignificantChanges?【英文标题】:Using both startUpdatingLocation and startMonitoringSignificantChanges? 【发布时间】:2013-09-12 17:04:52 【问题描述】:

同时调用 startUpdatingLocation 和 startMonitoringSignificantChanges 与其中一个或另一个是否可取或有任何问题?我了解重大更改调用 re: 电池寿命的好处,但是在使用它时发现它与触发 didUpdateToLocation 不一致,有时即使我知道我已经设置了我知道它应该在什么时候触发的位置,但有时根本不会触发我在那个位置,但没有。我能够验证我的应用程序与另一个行为非常相似的应用程序的结果,包括我的应用程序和在后台运行的其他应用程序(UIBackgroundModes 在 plist 中确实具有“应用程序注册位置更新”设置)。如果我尝试仅使用重大更改,则结果并不一致。如果我同时使用两者,我会得到准确的结果 + 额外的好处(需要),以便在应用程序终止时获得通知。我不想通过使用 startUpdatingLocation 来杀死电池寿命,并尝试调用 stopUpdatingLocation,然后在 applicationDidEnterBackground 中调用 startMonitoringSignificantChanges 以帮助在后台节省电池寿命,但似乎无法理解为什么要依赖重大变化无法始终如一地发挥作用。

【问题讨论】:

谢谢,我试试看。 【参考方案1】:

Apple 建议您在应用处于前台时使用-startUpdatingLocation,在后台使用-startMonitoringSignificantChanges。在应用程序处于前台时同时使用两者可能只是一种浪费,而且处理事件的工作量可能比仅仅监视 -didUpdateToLocation 还要多。在后台运行时,您可以关闭 GPS 模式并切换到功率更低的模式。您必须假设一旦您被后台处理或关闭,用户就不会那么在意准确性了。

【讨论】:

以上是关于同时使用 startUpdatingLocation 和 startMonitoringSignificantChanges?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftUI 同时放大手势和拖动手势

是否可以在从 Processing 接收数据的同时同时使用 Arduino 串行监视器?

为啥对 XML 同时使用 XSD 和 DTD?

同时使用 startUpdatingLocation 和 startMonitoringSignificantChanges?

使用 Kivy 同时显示多个时钟

同时使用多个css过滤器?