2012-03-30 20 views
68

如果我正在构建智能手机应用程序,该应用程序定期从服务器下载数据,并间歇性地上传数据(分析,广告等),我该怎么做尽量减少这些传输对电池寿命的影响?减少通过智能手机无线电下载内容的应用程序对电池的影响

使用无线通信(2G,3G,LTE等)传输的电池影响尤其显着。是否有关于无线射频的电源使用情况的任何信息,这些信息会影响我选择何时,以何种方式传输数据以最大限度地减少对电池寿命的影响?

回答

79

这个答案是从Android培训班总结, Transferring Data Without Draining the Battery这 解释如何减少下载 和网络连接的电池寿命的影响,尤其是涉及到 无线电台。

特别Optimizing Downloads for Efficient Network Access 解释在一些细节的无线电状态机并继续 来解释你的应用程序的连接模式应该如何与它交互 以减少相关的电池消耗。

的无线电状态机

Reference

每次你创建一个新的网络连接的无线电将转换到满功率状态。这种转换通常需要大约2秒钟,所以为了最小化等待时间,无线电引入延迟以推迟到较低能量状态的转换。

传输完成后,典型的3G无线电将保持全功率状态5秒钟,然后再在低能量状态下等待12秒钟,然后再进入待机状态。每次连接时,收音机总共将耗电近20秒。

这种方法可能会导致运行在现代智能手机操作系统上的应用程序效率低下,其中应用程序在前台(延迟时间很重要)和后台(电池寿命应该优先)中运行。

解决方案

对您的电池最大限度地减少下载的效果的关键是认识到转让的频率比下载的大小更为显着的影响。实际上,预取和排队/捆绑您的转账特别有效。

了解到每次启动连接都有可能导致无线电功耗达到近20秒时,捆绑您的数据传输非常重要,这样您就可以有效地实现类似于相似传输时间窗口,以便在每次传输会话期间传输尽可能多的数据,以尽量减少会话数量。

同样,预取允许您在单个连接中以满容量在单个突发中下载给定时间段内可能需要的所有数据。通过前端加载传输,可以减少下载数据所需的无线电激活次数,从而延长电池寿命,延长延迟时间,降低带宽并缩短下载时间。

但是,预取还会通过下载未使用的数据引入增加电池消耗和带宽使用的风险。

您预取的积极程度取决于下载数据的大小以及使用的可能性。一般来说,预取数据是一种很好的做法,因此您只需要每2到5分钟启动一次下载,大小为1到5兆字节。

重复使用现有网络连接而不是创建新连接通常更高效。重用连接还可以使网络更加智能地应对拥塞和相关的网络数据问题。

11

我建议你在应用程序设置中添加“应用程序的同步频率”首选项 - 因此用户在平衡数据新鲜度和电池使用率方面有一些话语权。不同的用户有不同的优先级

相关问题