我目前正在测试最新的iOS4功能,以将我的位置感知应用置于后台。好吧,它确实有效!但另一方面,要处理大量的电源使用也很麻烦。
该应用在过去四个小时中消耗了大约50%的电池电量。它阅读了Apple关于此主题的entire official documentation,但是我仍然不确定应用程序的哪些部分仍在运行以及哪些功能被挂起(在UI Drawing旁边,应该清楚)。
我没有使用任何真实的样板代码,而是使用了像ASIHTTPRequest这样的扩展库来与我的Web服务通信。您在 friend 车上进行的测试表明,当我使用i.e.时,网络连接性和位置服务仍在运行。
[locationManager startMonitoringSignificantLocationChanges];
Apples Documentation on不同的应用程序状态
我应该编写一个“裸机”功能来接收和发送该位置数据吗?我是否应该在应用程序驻留在后台时删除所有其他对象,以减少内存占用量?似乎还没有最佳实践。
有任何想法吗?也许你们可以为我提供一些见解。谢谢。
编辑:
有一个新的乐器工具 Energy Diagnostics Instruments 可以记录所连接设备的所有电量使用情况(适用于iPhone 3GS及更高版本)。另外,在设置应用程序->开发人员->电源使用情况下,设备上还有另一项服务。在现场测试您的电源使用情况非常好。以后可以在仪器中拉出创建的日志。
引用:WWDC 2010 Session 309-使用仪器进行高级性能分析
最佳答案
听起来您的应用正在通过蜂窝网络传输位置数据。打开蜂窝 radio 是功率消耗最迅速的原因之一,尤其是在用户与蜂窝塔的信号连接较弱的情况下。
您可能希望保存并打包一堆位置数据,并尽可能少地快速突发发送数据(每天两次,当用户停止移动30分钟后,只有在用户到达自己喜欢的位置之一之后,餐馆等)。打开 radio 的频率少于打开频率的一半可能会使您的电池生命周期几乎翻倍(除非用户也正在使用该设备进行其他操作)。
关于iphone - 最佳实践-iPhone后台应用程序模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3589086/