如何知道何时停止定位服务?

时间:2017-07-20 15:52:39

标签: ios core-location

在应用在后台时检索用户的位置我首先startMonitoringSignificantLocationChanges然后在DidUpdateLocations被解雇时我会使用第二个CLLocationManager startUpdatingLocation来检索确切的地理位置(准确度为100米)

问题在于医生说:

  

调用此方法会导致位置管理器获取初始值   位置修复(可能需要几秒钟)。之后,接收器主要在超出distanceFilter属性值时生成更新事件。

据我所知,第一个DidUpdateLocations将使用修复程序进行调用并不准确,并且随着时间的推移,其他DidUpdateLocations将被调用,位置更准确。

现在问题是,何时(以及如何?)我需要停止startUpdatingLocation?我在后台,所以我不能使用任何计时器或像这样思考

1 个答案:

答案 0 :(得分:0)

由于您需要100米的精度,您只需检查位置水平精度属性即可。如果条件满足,您可以停止核心位置管理器,否则您将继续跟踪。 请注意,通常重大监控更改的回调会使您的应用程序保持活动状态最短时间。

  

在唤醒时,应用程序将被置于后台,您将获得   少量时间(约10秒)手动重启   定位服务和处理位置数据。 (你必须手动   在任何挂起之前在后台重新启动位置服务   可以提供位置更新,如“了解何时”中所述   启动位置服务。)因为你的应用程序在后台,所以   必须做最小的工作,避免任何任务(如查询   网络)可能会阻止它在分配之前返回   时间到期。如果没有,您的应用将被终止。如果是iOS   应用程序需要更多时间来处理位置数据,它可以请求更多   后台执行时间使用   beginBackgroundTaskWithName:expirationHandler:方法   UIApplication类。