如何知道何时停止定位服务?
Posted
技术标签:
【中文标题】如何知道何时停止定位服务?【英文标题】:How to know when to stop the location services? 【发布时间】:2017-07-20 15:52:38 【问题描述】:要在应用程序处于后台时检索用户的位置,我首先执行startMonitoringSignificantLocationChanges
然后当DidUpdateLocations
被触发时,我执行第二个CLLocationManager
startUpdatingLocation
以检索确切的地理位置(精度为100m)
问题是文档说:
调用此方法会导致位置管理器获取初始值 位置修复(可能需要几秒钟)。之后,接收器主要在超过 distanceFilter 属性中的值时生成更新事件。
据我所知,第一个 DidUpdateLocations
将被调用,修复并不准确,随着时间的推移,其他DidUpdateLocations
将被调用,位置更准确。
现在的问题是,我何时(以及如何?)需要停止 startUpdatingLocation ?我在后台,所以我不能使用任何计时器或这样思考
【问题讨论】:
【参考方案1】:由于您需要 100m 精度,您可以简单地检查位置水平精度属性。如果满足条件,您可以停止核心位置管理器,否则您可以继续跟踪。 请注意,重大监控更改的回调通常会使您的应用在最短的时间内保持活动状态。
在唤醒时间,应用程序进入后台并给你 手动重启的一小段时间(大约 10 秒) 位置服务和处理位置数据。 (您必须手动 在任何未决之前在后台重新启动定位服务 可以交付位置更新,如知道何时 启动定位服务。)因为您的应用程序在后台,所以它 必须做最少的工作并避免任何任务(例如查询 网络),这可能会阻止它在分配之前返回 时间到期。如果没有,您的应用程序将被终止。如果一个 ios 应用需要更多时间来处理位置数据,它可以请求更多 后台执行时间使用 beginBackgroundTaskWithName:expirationHandler: 方法 UIApplication 类。
【讨论】:
以上是关于如何知道何时停止定位服务?的主要内容,如果未能解决你的问题,请参考以下文章