我正在开发一个理想情况下需要在后台运行定位服务的 iOS 应用程序。我已经测试了重要的位置,但这还不够准确。准确的位置是完美的,但这会消耗太多的电池寿命以使应用程序可行。
为了解决这个电池问题,我想我找到了一个使用NSTimer
inside的解决方案UIApplication:beginBackgroundTaskWithExpirationHandler:
。这会打开位置然后立即再次关闭,这会触发位置更新并重置backgroundTimeRemaining
.
但是,即使该位置每 9 分钟仅打开一秒钟,此解决方案仍会消耗大量电池 - 每 3-4 小时消耗 15%-20%。除了这个计时器之外,该应用程序没有在后台运行任何其他东西。我什至尝试在进入后台时释放所有视图,以确保没有任何东西坐着消耗电池。
检查仪器内部,我发现该应用程序在此等待状态下使用了 0.0% 的 CPU 和 14 MB 内存。在这一点上,我有点不知所措,特别是因为与 24/7 运行相比,每 540 秒运行 GPS 1 秒并不能显着减少电池消耗。
我已经开始编译以下问题,这可能会导致问题,我希望有人有答案或想法......
以这种方式运行应用程序是否会阻止手机进入某种低功耗模式?
启动 GPS 会消耗大量电力吗?
GPS 关闭后是否还会继续运行一段时间?