最佳实践 - iPhone 后台应用模式
Posted
技术标签:
【中文标题】最佳实践 - iPhone 后台应用模式【英文标题】:Best Practice - iPhone Background Application Mode 【发布时间】:2011-04-05 01:59:06 【问题描述】:我目前正在测试最新的 ios4 功能,以将我的位置感知应用置于后台。嗯,它确实有效!但另一方面,处理巨大的电力使用是相当困难的。
该应用在过去四个小时内消耗了大约 50% 的电池电量。它阅读了 Apple 关于此主题的 entire official documentation,但我仍然不确定我的应用程序的哪些部分仍在运行以及哪些功能已暂停(在 UI 绘图旁边,应该很清楚)。
我不使用任何真正的样板代码,而是使用像 ASIHTTPRequest 这样的扩展库来与我的网络服务通信。与朋友的汽车进行的测试是否表明网络连接和定位服务在我使用时仍在运行,即
[locationManager startMonitoringSignificantLocationChanges];
Apples Documentation on不同的应用状态
后台:应用程序在后台执行代码 [...]
我应该写一个“裸机”函数来接收和发送这个位置数据吗?我是否应该在应用程序驻留在后台时删除所有其他对象以减少内存占用?似乎还没有任何最佳做法。
有什么想法吗?也许你们可以为我提供一些你的见解。谢谢。
编辑: 有一个名为 Energy Diagnostics Instruments 的新 Instruments 工具可以记录连接设备的任何电量使用情况(适用于 iPhone 3GS 及更高版本)。设备上的设置应用程序-> 开发人员-> 电源使用中还有另一项服务。在现场测试您的电源使用情况非常棒。创建的日志可以稍后在仪器中拉取。
参考: WWDC 2010 Session 309 - Advanced Performance Analysis with Instruments
【问题讨论】:
【参考方案1】:听起来您的应用正在通过蜂窝网络传输位置数据。打开蜂窝无线电是耗电最快的原因之一,尤其是当用户与蜂窝塔的信号连接较弱时。
您可能希望保存和打包一堆位置数据,并尽可能少地快速发送数据(每天两次,当用户停止移动 30 分钟时,仅在用户到达一个他们最喜欢的餐馆等)打开收音机的频率低于一半可以让您的电池寿命几乎翻倍(除非用户也在使用该设备做其他事情)。
【讨论】:
以上是关于最佳实践 - iPhone 后台应用模式的主要内容,如果未能解决你的问题,请参考以下文章