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

And*_*ndy 17 gps location background power-management ios

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

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

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

检查内部仪器,我发现应用程序在此等待状态下使用0.0%的CPU和14 MB的内存.在这一点上,我对此有点不知所措,特别是因为每隔540秒运行GPS 1秒钟并不能提供明显的电池消耗减少,而不是每天24小时运行它.

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

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

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

  • 即使关闭后,GPS还能继续运行一段时间吗?

Gre*_*ons 2

是的,WWDC 2011 第 312 场会议“使用仪器进行 iOS 性能和功耗优化”在大约 45 分钟的时间里对此进行了介绍。

当您使用完 GPS 后,它可以保持活动状态长达 10 秒,并且活动无线电会唤醒设备,并在活动时防止设备“睡眠”。

您将能够使用仪器中的“能源诊断”模板看到这一点。