locationManager:当allowDeferredLocationUpdatesUntilTraveled设置时,didUpdateLocations被称为不停止?

时间:2014-06-26 17:36:51

标签: ios objective-c cllocationmanager

我正在设置以下内容,我认为不会调用" didUpdateLocations"根据我的参数,但它每秒调用它约3次?

    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [self.locationManager setActivityType:CLActivityTypeAutomotiveNavigation];
    [self.locationManager allowDeferredLocationUpdatesUntilTraveled:15 timeout:3000.0];

设置" allowDeferredLocationUpdatesUntilTraveled"它仍然每秒呼叫它约3次?

2 个答案:

答案 0 :(得分:1)

您可以解决部分期望的结果 - 只有在超过15米的情况下才会更新 -

self.locationManager.distanceFilter = 15;

来自文档:"在生成更新事件之前,设备必须水平移动的最小距离(以米为单位)。"

刚刚在我的iOS7 / 8应用程序中使用,似乎在前台工作正常。

对于触发之间的时间,建议您使用CLLocation时间戳。

答案 1 :(得分:0)

当你将ActivityType设置为CLActivityTypeAutomotiveNavigation时,你告诉你的应用你的导航应用程序可能会非常活跃。使用导航设置将使您的应用程序不仅使用gps硬件(例如加速度计)。该文件基本上说这会在瞬间消耗你的电池,你应该计划在活动时插入设备。

此外,当您的应用程序背景化时,还会使用allowDeferredLocationUpdates。它表示您关心接收位置更新,但实时并不需要它们,所以不要一直唤醒应用程序。

如果你想暂停,因为你没有移动尝试设置pausesLocationUpdatesAutomatically。