减少iOS背景位置电池使用情况

时间:2012-04-08 10:57:07

标签: ios background gps location power-management

我正在开发一款理想情况下需要在后台运行位置服务的iOS应用。我测试了重要的位置,这不够准确。准确的位置是完美的,但这会消耗太多的电池寿命,使应用程序可行。

为了解决这个电池问题,我想我找到了一个在NSTimer内使用UIApplication:beginBackgroundTaskWithExpirationHandler:的解决方案。这会打开位置,然后立即关闭,从而触发位置更新并重置backgroundTimeRemaining

然而,这种解决方案仍然耗费大量电池 - 每3-4小时耗电15%-20% - 即使每9分钟仅打开一秒钟。除了这个计时器之外,应用程序在后台没有运行任何其他内容。我甚至尝试在进入后台时释放所有视图,以确保没有任何东西坐着消耗电池。

检查内部仪器,我发现应用程序在此等待状态下使用0.0%的CPU和14 MB的内存。在这一点上,我对此有点不知所措,特别是因为每隔540秒运行GPS 1秒钟,与24/7全天候运行相比,电池消耗并没有明显减少。

我已经开始编写以下问题,这可能会导致问题,我希望有人有答案或想法......

  • 以这种方式运行应用是否会阻止手机进入某种低功耗模式?

  • 启动GPS会使用大量电量吗?

  • 即使关闭后,GPS是否仍会继续运行一段时间?

1 个答案:

答案 0 :(得分:2)

是的,WWDC 2011会议312“使用乐器进行iOS性能和功耗优化”大约需要45分钟。

当您使用完GPS后,它可以保持活动状态长达10秒,而有效的无线电设备都会唤醒设备并在激活状态时阻止设备“休眠”。

您可以使用仪器中的“能量诊断”模板查看此内容。