iOS7:推迟更新或将所需精度设置为低精度是否更节能

时间:2013-12-07 20:16:42

标签: ios ios7 core-location cllocationmanager

我有一个应用程序,每隔K分钟我需要准确的位置更新 - 即使在后台也是如此。重要的位置更改更新不足以满足我的需求,因此我需要使用CLLocationManager的{​​{1}}方法并使其永久运行。

我希望尽可能少地使用电源,同时仍然可以定期更新位置信息。似乎节省功率的两个选项是(暂时)将CLLocationManager的startUpdatingLocation属性设置为最不准确的设置(例如3英里),或者通过desiredAccuracy方法推迟位置更新。但是,这两种技术互不兼容,因为延迟更新需要高精度设置(最准确)。

有没有人知道哪种方法可以节省更多电量,或者是否有其他方法可以在获得定期更新的同时最大限度地降低功耗(即使在后台)。

2 个答案:

答案 0 :(得分:3)

您应该同时执行延迟更新 reduce desiredAccuracy

每隔K分钟,检查当前CLLocation值,如果其准确度可接受,则使用它。如果没有将最多 30秒的desiredAccuracy减少到30米(或最佳或最大可接受的最大值)。这将打开GPS芯片30秒,如果您获得可接受的准确位置,请使用该位置并立即将desiredAccuracy放回到3000(kCLLocationAccuracyThreeKilometers),直到下一个K分钟开始。如果你在30秒内没有获得可接受的准确度,那就太糟糕了,使用你在30秒内获得的最佳CLLocation,回到3000米准确度并在K分钟内再试一次。

请务必阅读how to configure deferred updates。让它们上班并不容易,但是使用它可以让你在30秒开启GPS时只唤醒CPU而不是30次,从而节省了大量电池。

延迟更新需要iPhone 5或更高版本以及iOS 6或更高版本。您可以使用deferredLocationUpdatesAvailable来确定设备是否支持它。

答案 1 :(得分:0)

延迟更新使用的功率大大降低,但它需要硬件支持,因此它始终不可用。它的工作原理是将位置数据缓存在硬件中,然后一次性将其传递给您的应用程序(省电不是经常激活应用程序)。它还提供基于时间的配置。

通过不使用GPS(使用手机信号塔)再次监控重大更改(startMonitoringSignificantLocationChanges)会再次耗电,因此需要特定的硬件支持。

只需将所需精度设置为低,就不一定使用上述任何一项功能,因此您应该在运行时检查设备功能并使用可用的功能。 AFAIK没有发布任何统计数据,因为硬件支持的选项使用的功率较少。