我正在开发一款iOS应用程序,需要在后台运行位置服务。我已经测试了“显著位置变化”,但这并不准确。确切的位置是完美的,但这会消耗太多的电池寿命,使应用程序无法使用。
为了解决这个电池问题,我想到了一个解决方案,即在`UIApplication:beginBackgroundTaskWithExpirationHandler:`中使用`NSTimer`。 这将打开位置服务,然后立即关闭,触发位置更新并重置`backgroundTimeRemaining`。
然而,即使每9分钟只打开一秒钟的位置服务,此解决方案仍会耗费大量电池寿命——每3-4小时耗费15%至20%的电量。 应用程序除了这一个计时器以外,在后台没有运行任何其他东西。 我甚至尝试在进入后台时释放所有视图,以确保没有东西占用电池。
在Instruments工具中检查时,我发现应用程序在此等待状态下使用0.0%的CPU和14 MB的内存。 现在我有点困惑了,不知道原因是什么,特别是每540秒运行1秒钟GPS与全天运行相比,并没有明显减少电池消耗。
我开始整理以下问题,可能有助于解决问题,希望有人能提供答案或想法...
为了解决这个电池问题,我想到了一个解决方案,即在`UIApplication:beginBackgroundTaskWithExpirationHandler:`中使用`NSTimer`。 这将打开位置服务,然后立即关闭,触发位置更新并重置`backgroundTimeRemaining`。
然而,即使每9分钟只打开一秒钟的位置服务,此解决方案仍会耗费大量电池寿命——每3-4小时耗费15%至20%的电量。 应用程序除了这一个计时器以外,在后台没有运行任何其他东西。 我甚至尝试在进入后台时释放所有视图,以确保没有东西占用电池。
在Instruments工具中检查时,我发现应用程序在此等待状态下使用0.0%的CPU和14 MB的内存。 现在我有点困惑了,不知道原因是什么,特别是每540秒运行1秒钟GPS与全天运行相比,并没有明显减少电池消耗。
我开始整理以下问题,可能有助于解决问题,希望有人能提供答案或想法...
- 运行这种方式的应用程序是否会阻止手机进入某种低功耗模式?
- 启动GPS是否会使用大量电力?
- 关闭后,GPS是否会持续运行一段时间?