如果我要构建一个智能手机应用程序,该应用程序可以定期从服务器下载数据,并间歇性地上传数据(分析,广告等),我该怎么做才能最大程度地减少这些传输对电池寿命的影响?
使用无线设备(2G,3G,LTE等)进行的传输对电池的影响尤其明显。关于无线电的功率使用情况,是否应该影响我对何时,什么以及如何传输数据的选择,以最大程度地减少对电池寿命的影响?
Answers:
Android培训课程“在不消耗电池的情况下传输数据”中总结了该答案,该课程 解释了如何最大程度地减少下载和网络连接对电池寿命的影响,尤其是与无线电有关的电池寿命。
尤其是《优化下载以实现高效的网络访问》 详细解释了无线无线电状态机,并继续说明了应用程序的连接模型应如何与之交互以最大程度地减少相关的电池消耗。
无线无线电状态机
每次创建新的网络连接时,无线电将转换为全功率状态。此过渡通常需要2秒钟左右的时间,因此,为了最大程度地减少延迟,无线电会引入延迟以将过渡推迟到较低的能量状态。
传输完成后,典型的3G无线电将在5秒钟内保持全功率,然后在低功耗状态下再等待12秒钟,然后再进入待机状态。每次您进行连接时,无线电将总共消耗近20秒的时间。
这种方法可能会导致在现代智能手机操作系统上运行的应用程序效率低下,这些应用程序既在前台(对延迟至关重要的地方)又在后台(应优先考虑电池寿命)运行。
解决方案
最小化下载对电池的影响的关键是要认识到传输频率比下载量具有更大的影响。实际上,预取和排队/捆绑传输特别有效。
知道每次启动连接都可能导致无线电设备消耗将近20秒钟的时间,因此捆绑数据传输非常重要,这样您就可以有效地进行相移传输,因为相移会在相似的时间范围内发生,您将在每个传输会话期间传输尽可能多的数据,以最大程度地减少会话数。
类似地,预取使您可以在单个突发中通过单个连接以最大容量下载给定时间段内可能需要的所有数据。通过预先加载传输,您可以减少下载数据所需的无线电激活次数,从而节省电池寿命,改善等待时间,降低带宽并减少下载时间。
但是,预取还会通过下载未使用的数据而带来增加电池消耗和带宽使用的风险。
预取的积极程度取决于所下载数据的大小以及被使用的可能性。一般而言,良好的做法是预取数据,以便您仅需要每2至5分钟(以1至5兆字节为单位)启动另一个下载。
通常,重用现有的网络连接比创建新的网络连接更有效。重用连接还可以使网络对拥塞和相关的网络数据问题做出更明智的反应。