2011-03-30 53 views
8

CLLocationManager distanceFilter属性是否执行任何操作以在要求的距离提出请求之间节省电池寿命/用电量。我不认为它,但我只是想检查,我仍然应该调用stopUpdatingLocation,而不是让它运行。CLLocationManager distanceFilter是否做任何事情来节省电力?

我在这里找到一个答案,建议电话拨打它的轮询(直到达到所需距离),从而节省电量。但另一方面,似乎暗示即使检查期望的距离也需要天线处于活动状态,并且因此节省了很少的功率。

当前当我需要位置详细信息我明确地做了startUpdatingLocation,在将stopUpdatingLocation消息发送到CLLocationManager之前检查合适的位置。

回答

6

有没有什么直接记录(在distanceFilter属性),以表明这种情况。如果您关心电池寿命并给予用户体面的体验,您绝对应该致电stopUpdatingLocation。在我自己的开发应用程序的经验中,我从来没有看到使用更大的值为distanceFilter时电池寿命有任何改善 - 也许如果它做了任何事情的收益是太小,无法注意到。

我相信distanceFilter的重点不是为了节省电力,而是为了让您控制在您的应用不需要固定位置数据流时获得的回调数量。

这就是说,我怀疑它确实涉及到电源需求。当然,其相关属性distanceAccuracy对电源管理造成一定的影响 - 按照苹果的文档:

设置位置事件所需的精度一公里给位置管理的灵活性,以关闭GPS硬件和单纯依靠WiFi或小区无线电。这可以导致显着的节能。

所以我个人怀疑distanceFilterdistanceAccuracy都以某种方式影响力量。我想问题在于,可测量的效果会因设备而异,可能会从操作系统版本到操作系统版本。所以以任何有意义的方式进行量化都非常困难。

5

一个苹果样本代码中的doc美专,设置较大的distanceFilter不帮助节省电力:

http://developer.apple.com/library/ios/#samplecode/LocateMe/Listings/ReadMe_txt.html

...此外,distanceFilter不会影响硬件的活动 - 即通过设置更大的距离滤波器不存在功率节省,因为硬件继续获取测量值。这只会影响这些度量是否传递给位置管理者的委托。只有关闭位置管理器才能保存电源。

相关问题