我正在设置以下内容,我认为不会调用" didUpdateLocations"根据我的参数,但它每秒调用它约3次?
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[self.locationManager setActivityType:CLActivityTypeAutomotiveNavigation];
[self.locationManager allowDeferredLocationUpdatesUntilTraveled:15 timeout:3000.0];
设置" allowDeferredLocationUpdatesUntilTraveled"它仍然每秒呼叫它约3次?
答案 0 :(得分:1)
您可以解决部分期望的结果 - 只有在超过15米的情况下才会更新 -
self.locationManager.distanceFilter = 15;
来自文档:"在生成更新事件之前,设备必须水平移动的最小距离(以米为单位)。"
刚刚在我的iOS7 / 8应用程序中使用,似乎在前台工作正常。
对于触发之间的时间,建议您使用CLLocation时间戳。
答案 1 :(得分:0)
当你将ActivityType设置为CLActivityTypeAutomotiveNavigation时,你告诉你的应用你的导航应用程序可能会非常活跃。使用导航设置将使您的应用程序不仅使用gps硬件(例如加速度计)。该文件基本上说这会在瞬间消耗你的电池,你应该计划在活动时插入设备。
此外,当您的应用程序背景化时,还会使用allowDeferredLocationUpdates。它表示您关心接收位置更新,但实时并不需要它们,所以不要一直唤醒应用程序。
如果你想暂停,因为你没有移动尝试设置pausesLocationUpdatesAutomatically。