如果我要构建一个智能手机应用程序,该应用程序可以定期从服务器下载数据,并且还间歇性地上传数据(分析,广告等),我该怎么做才能最大程度地减少这些传输对电池生命周期的影响?

使用无线设备(2G,3G,LTE等)进行的传输对电池的影响特别显着。关于 radio 的功率使用情况,是否应该影响我对何时,什么以及如何传输数据的选择,以最大程度地减少对电池生命周期的影响?

最佳答案



无线广播状态机

Reference

每次创建新的网络连接时, radio 将转换为全功率状态。这种过渡通常需要2秒钟左右的时间,因此,为了最大程度地减少等待时间, radio 会引入延迟以将过渡推迟到较低的能量状态。

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

这种方法可能会导致在现代智能手机操作系统上运行的应用程序效率低下,这些应用程序既在前台(对延迟至关重要的地方)又在后台(应优先考虑电池生命周期)运行。

解决方案

最小化下载对电池的影响的关键是要认识到传输频率比下载量具有更大的影响。实际上,预取和排队/ bundle 传输特别有效。

知道每次启动连接都可能导致 radio 设备消耗将近20秒钟的时间,因此 bundle 数据传输非常重要,这样您就可以有效地进行相移传输,因为相移会发生在相似的时间范围内,因此您将在每个传输 session 期间传输尽可能多的数据,以最大程度地减少 session 数。

类似地,预取使您可以在单个突发中通过单个连接以最大容量下载给定时间段内可能需要的所有数据。通过预先加载传输,可以减少下载数据所需的 radio 激活次数,从而节省电池生命周期,改善延迟,降低带宽并减少下载时间。

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

预取的积极程度取决于所下载数据的大小以及被使用的可能性。一般而言,良好的做法是预取数据,以便您仅需要每2至5分钟(以1至5兆字节为单位)启动另一个下载。

通常,重用现有的网络连接比创建新的网络连接更为有效。重用连接还可以使网络对拥塞和相关的网络数据问题做出更明智的 react 。

关于android - 减少通过智能手机广播下载内容的应用程序对电池的影响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9950379/

10-11 22:47
查看更多