如果我正在构建一个智能手机应用程序,该应用程序定期从服务器下载数据,也会断断续续地上传数据(分析、广告等)。我可以做些什么来最小化这些传输对电池寿命的影响?
使用无线无线电(2G、3G、LTE等)传输时对电池的影响是特别重要的。无线无线电的电源使用配置文件是否会影响我对何时、什么和如何传输数据的选择,以便将其对电池寿命的影响降至最低?
发布于 2012-03-31 05:03:25
这个答案是从Android培训课程Transferring Data Without Draining the Battery中总结出来的,该课程解释了如何最小化下载和网络连接对电池寿命的影响,特别是与无线收音机相关的影响。
特别是,Optimizing Downloads for Efficient Network Access详细解释了无线无线电状态机,并继续解释应用程序的连接模型应该如何与它交互,以最大限度地减少相关的电池消耗。
对无线无线电状态机执行操作
每次创建新的网络连接时,无线电都会转换到全功率状态。这种转换通常需要大约2秒,因此为了最大限度地减少延迟,无线电引入了一个延迟来推迟转换到较低能量状态。
典型的3G无线电在传输完成后将保持满功率状态5秒,然后在进入待机状态之前在低能量状态下等待12秒。总体而言,每次连接时,无线电都会耗电近20秒。
这种方法可能会导致在现代智能手机操作系统上运行的应用程序效率低下,在这些操作系统中,应用程序同时在前台(延迟很重要)和后台(应该优先考虑电池寿命)运行。
解决方案
将下载对电池的影响降至最低的关键是认识到传输频率比下载大小具有更大的影响。实际上,预取和和排队/捆绑您的传输是特别有效的。
要知道,每次启动连接时,可能会导致无线电耗电近20秒,因此捆绑数据传输非常重要,这样您就可以有效地进行相移传输,从而在每个传输会话期间传输尽可能多的数据,从而最大限度地减少会话数量。
同样,预取允许您在单个突发中以满容量通过单个连接下载给定时间段内可能需要的所有数据。通过预先加载传输,您可以减少下载数据所需的无线电激活次数,从而节省电池寿命、改善延迟、降低带宽并缩短下载时间。
然而,预取也引入了通过下载不使用的数据来增加电池消耗和带宽使用的风险。
预取的积极程度取决于正在下载的数据的大小和被使用的可能性。一般来说,预取数据是一种很好的做法,这样您只需要每2到5分钟启动另一次下载,大小为1到5 of。
重用现有的网络连接通常也比创建新的网络连接更有效。重用连接还允许网络更智能地对拥塞和相关的网络数据问题做出反应。
发布于 2012-04-04 02:10:17
我建议您在应用程序的设置中添加“同步频率”首选项--这样user在平衡数据新鲜度和电池使用量方面就有一定的发言权。不同的用户有不同的优先级。
https://stackoverflow.com/questions/9950379
复制相似问题