2010-08-28 47 views
6

我目前正在测试最新的iOS4功能,将我的位置感知应用程序置于后台。那么,它的确行得通!但另一方面,处理巨大的用电问题则相当棘手。最佳实践 - iPhone背景应用程序模式

在过去的四个小时里,该应用程序消耗了约50%的电池电量。它阅读了苹果公司关于这个主题的entire official documentation,但我仍然不确定我的应用程序的哪些部分仍在运行,哪些功能被暂停(除了UI图,应该清楚)。

我不使用任何真正的样板代码,但扩展库如ASIHTTPRequest与我的web服务交谈。用朋友的车测试你表明的网络连接和与位置服务时,我即使用

[locationManager startMonitoringSignificantLocationChanges]; 

Apples Documentation on不同的应用程序状态

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

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

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

编辑: 有一个称为Energy Diagnostics Instruments新仪器与工具连接的设备记录任何电量(为iPhone 3GS及更高版本)。在设置应用程序 - >开发人员 - >电源使用情况下,设备上还有另一项服务。在现场测试你的用电量真是太好了。创建的日志可以稍后在乐器中拉出。

参考: WWDC 2010届309 - 高级性能分析工具

回答

4

听起来像你的应用程序是通过蜂窝网络发送的位置数据。打开蜂窝无线电是导致功率消耗的最迅速原因之一,特别是当用户与蜂窝塔之间的信号连接较弱时。

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