减少 iOS 后台位置电池使用量

Posted

技术标签:

【中文标题】减少 iOS 后台位置电池使用量【英文标题】:Reducing iOS Background Location Battery Usage 【发布时间】:2012-04-21 04:19:14 【问题描述】:

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

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

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

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

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

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

启动 GPS 会消耗大量电力吗?

关闭后GPS是否还能继续运行一段时间?

【问题讨论】:

@GregularExpressions - 听起来不错。我不相信 GPS 硬件可以在通电后的第一秒内做很多事情。接收器必须从几颗卫星获取完整的消息帧来计算其位置,并且 GPS 信号带宽/比特率非常低(它必须是小型低功率接收器是不可能的)。即使发出关闭信号,GPS 系统也可能会一直运行,直到它在关闭之前获得一个修复。 ..那些低功耗 GPS 芯片中的接收器无论如何都是垃圾。 你的问题解决了吗? 它没有解决问题,它仍然是一项正在进行的研究。我似乎已经确定的是这个过程阻止了 iPhone 进入深度睡眠,并不是我连接到 GPS 直接导致了问题,而是所有其他进程(如邮件、icloud 等)继续以全功率运行. @Andy:你在 2 年后找到解决方案了吗 :) ?谢谢。 【参考方案1】:

是的,WWDC 2011 Session 312“iOS Performance and Power Optimization with Instruments”在大约 45 分钟时介绍了这一点。

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

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

【讨论】:

以上是关于减少 iOS 后台位置电池使用量的主要内容,如果未能解决你的问题,请参考以下文章

iOS GPS 电池耗电,如何减少耗电?

iOS 7 后台定位更新精度高、电池使用率低且禁用暂停

在后台播放音乐时减少电池消耗

考虑到电池,Android 在后台重复获取位置的最佳方法

用于在后台检查电池电量的 iOS 应用程序

当设备电池​​电量低于 40% 时,iOS 后台获取失败