6

我目前正在测试最新的 iOS4 功能,以将我的位置感知应用程序置于后台。好吧,它确实有效!但另一方面,处理巨大的电力使用是相当困难的。

该应用程序在过去四个小时内消耗了大约 50% 的电池电量。它阅读了Apple 关于这个主题的整个官方文档,但我仍然不确定我的应用程序的哪些部分仍在运行以及哪些功能被暂停(除了 UI 绘图,应该很清楚)。

我不使用任何真正的样板代码,而是使用ASIHTTPRequest 之类的扩展库来与我的 Web 服务通信。与朋友的汽车进行的测试是否表明当我使用 ie 时网络连接和定位服务仍在运行

[locationManager startMonitoringSignificantLocationChanges];

关于不同应用程序状态的Apples 文档

背景:应用程序在后台并执行代码 [...]

我应该写一个“裸机”函数来接收和发送这个位置数据吗?我是否应该在应用程序驻留在后台时删除所有其他对象以减少内存占用?似乎还没有任何最佳实践。

有任何想法吗?也许你们可以为我提供一些你的见解。谢谢。

编辑: 有一个名为Energy Diagnostics Instruments的新仪器工具,用于记录连接设备的任何电源使用情况(适用于 iPhone 3GS 及更高版本)。设备上的设置应用程序 -> 开发人员 -> 电源使用中还有另一项服务。在现场测试您的电源使用情况非常棒。创建的日志可以稍后在仪器中提取。

参考: WWDC 2010 Session 309 - 使用仪器进行高级性能分析

4

1 回答 1

4

听起来您的应用正在通过蜂窝网络传输位置数据。打开蜂窝无线电是耗电最快的原因之一,尤其是当用户与蜂窝塔的信号连接较弱时。

您可能希望保存和打包一堆位置数据,并尽可能少地快速发送数据(每天两次,当用户停止移动 30 分钟时,仅在用户到达他们最喜欢的位置后餐厅等)打开收音机的频率低于一半可以让您接近将电池寿命延长一倍(除非用户也在使用该设备做其他事情)。

于 2010-08-28T04:15:50.540 回答