在应用在后台时检索用户的位置我首先startMonitoringSignificantLocationChanges
然后在DidUpdateLocations
被解雇时我会使用第二个CLLocationManager
startUpdatingLocation
来检索确切的地理位置(准确度为100米)
问题在于医生说:
调用此方法会导致位置管理器获取初始值 位置修复(可能需要几秒钟)。之后,接收器主要在超出distanceFilter属性值时生成更新事件。
据我所知,第一个DidUpdateLocations
将使用修复程序进行调用并不准确,并且随着时间的推移,其他DidUpdateLocations
将被调用,位置更准确。
现在问题是,何时(以及如何?)我需要停止startUpdatingLocation?我在后台,所以我不能使用任何计时器或像这样思考
答案 0 :(得分:0)
由于您需要100米的精度,您只需检查位置水平精度属性即可。如果条件满足,您可以停止核心位置管理器,否则您将继续跟踪。 请注意,通常重大监控更改的回调会使您的应用程序保持活动状态最短时间。
在唤醒时,应用程序将被置于后台,您将获得 少量时间(约10秒)手动重启 定位服务和处理位置数据。 (你必须手动 在任何挂起之前在后台重新启动位置服务 可以提供位置更新,如“了解何时”中所述 启动位置服务。)因为你的应用程序在后台,所以 必须做最小的工作,避免任何任务(如查询 网络)可能会阻止它在分配之前返回 时间到期。如果没有,您的应用将被终止。如果是iOS 应用程序需要更多时间来处理位置数据,它可以请求更多 后台执行时间使用 beginBackgroundTaskWithName:expirationHandler:方法 UIApplication类。