减less通过智能电话下载内容的应用程序对电池的影响
如果我正在构build一个定期从服务器下载数据的智能手机应用程序,并且还间歇性地上传数据(分析,广告等),我可以做些什么来最大限度地减less这些传输对电池寿命的影响?
使用无线电(2G,3G,LTE等)传输的电池影响尤为显着。 有什么关于无线电的电源使用情况,这将影响我的select何时,什么和如何传输数据,以尽量减less其对电池寿命的影响?
这个答案总结在Android培训课程中,在不消耗电池的情况下传输数据,它解释了如何最大限度地减less下载和networking连接对电池寿命的影响,特别是与无线电无线相关。
特别是针对高效networking访问优化下载解释了无线电状态机的一些细节,并继续解释您的应用程序的连接模型应如何与之交互,以最大限度地减less相关的电池消耗。
无线电台状态机
参考
每次创build新的networking连接时,无线电都将转换到全功率状态。 这种转换通常需要大约2秒钟,所以为了最小化等待时间,无线电引入延迟以推迟到较低能量状态的转换。
传输完成后,典型的3G无线电将保持全功率状态5秒钟,然后在低能量状态下再等待12秒钟,然后再进入待机状态。 每次连接时,收音机总共将耗电近20秒。
这种方法可能导致运行在现代智能手机操作系统上的应用程序效率低下,应用程序运行在前台(延迟时间很重要)和后台(电池寿命应该优先)。
解决scheme
最大限度地减less下载对电池的影响的关键是认识到,传输的频率比下载的大小有更大的影响。 实际上,预取和排队/捆绑您的转账特别有效。
知道每次启动连接都有可能导致无线电功耗达到近20秒,捆绑数据传输非常重要,这样您就可以在相似的时间窗内实现相应的相移传输,您将在每个传输会话期间传输尽可能多的数据,以尽量减less会话数量。
同样,预取function允许您在单个连接中以满载的forms下载一个给定时间段内可能需要的所有数据。 通过前端加载传输,可以减less下载数据所需的无线电激活次数,节省电池使用时间,延迟时间,降低带宽并减less下载时间。
然而,预取也会通过下载未使用的数据而引入增加电池消耗和带宽使用的风险。
您预取的积极程度取决于下载数据的大小以及使用的可能性。 一般来说,预取数据是一种很好的做法,您只需要每2到5分钟启动一次下载,大小为1到5兆字节。
重用现有的networking连接而不是创build新的networking连接通常也更高效。 重用连接还可以使networking更加智能地应对拥塞和相关的networking数据问题。
我build议你在应用程序的设置中添加一个“经常同步”的选项,这样用户在平衡数据新鲜度和电池使用率方面有一些话语权。 不同的用户有不同的优先级