【问题标题】:CLLocationmanager: Save batteryCLLocationmanager:节省电池
【发布时间】:2012-05-06 19:25:55
【问题描述】:

我的新“正在开发的应用程序”出于多种目的使用 CLLocationManager 的实例。为了使应用程序尽可能对电池友好,定位服务应仅在需要时激活,并在数据刷新完成后立即停用。出于我的目的,在 10 秒内仅获取一次位置数据就足够了。 (尚未确定确切的区间长度)。

我的问题是,“关闭定位服务”最省电的方法是什么?仅使用“stopUpdatingLocation”方法并将 CLLocationManager 自己保留在内存中是否足够,或者我需要释放整个实例,并在下次刷新之前分配一个新实例?

【问题讨论】:

  • 每十秒钟似乎很多。除非是 GPS 应用,否则用户不会在那么短的时间内长途跋涉。
  • 我考虑添加一个用户偏好,用户可以在其中选择定位是在全功率模式下运行还是在“花功率模式”下运行。该应用程序可以用于什么,目前还不是100%清楚,我希望它有任何用途。 :)

标签: iphone ios cocoa-touch


【解决方案1】:

我同意stopUpdatingLocationdistanceFilterdesiredAccuracy 结合使用的其他答案。请注意,当所需的精度在公里范围内时,位置管理器甚至可能不必启动 GPS。

同样,根据您的用途,查看区域监控和重要的位置更新,因为它们对电池更友好。

相关:Location Awareness Programming Guide - Tips for Conserving Battery Power

【讨论】:

  • 而且我只想补充一点,即使您要求 10 米甚至 100 米的所需精度,如果用户在没有 GPS 接收且打开 WiFi 的大型建筑物内,您可能永远无法获得它关闭(例如,我发现很多人在工作时会关闭 WiFi)。如果是这种情况,您也不会每 10 秒获得一次更新,因为返回新位置的委托方法仅在用户移动到另一个蜂窝塔时才会触发(如果他们在里面则不会出现这种情况没有 Wifi + GPS)
【解决方案2】:

是的。拨打stopUpdatingLocation就够了。

更好的方法是为distanceFilterdesiredAccuracy 设置好的值。 10 秒的时间不足以预热 GPS。

CLLocationManager

【讨论】:

    【解决方案3】:

    设置适当的distanceFilterdesiredAccuracy 可能是对电池寿命影响最大的两个因素。

    然而

    要真正了解什么是最省电的,您应该使用 Instruments 并测量设备上的电池消耗。为此有一个内置工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多