我目前正在测试最新的 iOS4 功能,以将我的位置感知应用程序置于后台。嗯,它确实有效!但另一方面,处理巨大的电力使用却相当困难。
该应用在过去四个小时内消耗了约 50% 的电池电量。它读取 entire official documentation Apple 关于此主题的信息,但我仍然不确定应用程序的哪些部分仍在运行以及哪些功能已暂停(除了 UI 绘图之外,这应该很清楚)。
我不使用任何真正的样板代码,而是使用扩展库,例如 ASIHTTPRequest与我的网络服务交谈。对 friend 的汽车进行的测试是否表明,当我使用即时,网络连接和定位服务仍在运行
[locationManager startMonitoringSignificantLocationChanges];
Apples Documentation on不同的应用程序状态
Background: The application is in the background and executing code [...]
我应该编写一个“裸机”函数来接收和发送该位置数据吗?当应用程序驻留在后台时,我是否应该删除所有其他对象以减少内存占用?似乎还没有任何最佳实践。
有什么想法吗?也许你们可以向我提供一些你们的见解。谢谢。
编辑: 有一个名为 Energy Diagnostics Instruments 的新仪器工具。 记录连接设备的所有电量使用情况(适用于 iPhone 3GS 及更高版本)。此外,设备上还有另一个服务,位于“设置应用程序”->“开发人员”->“电源使用情况”。在现场测试您的电量使用情况非常棒。创建的日志可以稍后在工具中提取。
引用: WWDC 2010 第 309 场 session - 使用仪器进行高级性能分析
最佳答案
听起来您的应用正在通过蜂窝网络传输位置数据。打开蜂窝 radio 是导调用力耗尽的最快速原因之一,特别是当用户与蜂窝塔的信号连接较弱时。
您可能想要保存并打包一堆位置数据,并尽可能少地快速发送数据(每天两次,当用户停止移动 30 分钟时,仅在用户到达一个位置后发送)他们最喜欢的餐馆等)将 radio 打开的次数减少一半可以使电池生命周期接近加倍(除非用户还用设备做其他事情)。
关于iphone - 最佳实践-iPhone后台应用模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3589086/