CLLocationManager distanceFilter是否做了什么来节省电力?

时间:2011-03-30 18:44:06

标签: iphone objective-c cocoa-touch

CLLocationManager distanceFilter属性是否可以在所需距离之间执行任何操作以节省电池寿命/功耗。我不认为它,但我只是想检查我是否应该仍然调用stopUpdatingLocation而不是让它继续运行。

我在这里找到一个答案,建议电话拨打其轮询(直到达到所需的距离),从而节省电力。但另一方面,它似乎暗示即使检查所需的距离也需要天线有效,因此节省的电力很少。

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

2 个答案:

答案 0 :(得分:7)

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

我认为distanceFilter的目的不是为了节省电量,而是让你控制你的应用不需要恒定的位置数据流时所获得的回调次数。

那就是说,我怀疑它确实涉及电力需求。当然,它的相关属性distanceAccuracy对电源管理有一定的影响 - 根据Apple文档:

  

将位置事件的所需精度设置为1公里,使位置管理员可以灵活地关闭GPS硬件并完全依赖WiFi或手机无线电。这可以显着节省电力。

所以我个人怀疑distanceFilterdistanceAccuracy都会以某种方式影响权力。问题(对我而言,我猜)是可测量的效果因设备而异,可能从操作系统版本到操作系统版本。因此,以任何有意义的方式量化都非常困难。

答案 1 :(得分:6)

一个Apple示例代码文档明确规定,设置较大的distanceFilter 有助于节省电量:

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

  

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