10

我观察到,如果我在应用程序的屏幕上使用 wget,我可以更快地下载文件,它会获得屏幕昏暗唤醒锁定,而不是在没有此应用程序并关闭屏幕的情况下执行相同操作。我下载了完全相同的文件(从我的apache web 服务器),当我在应用程序上使用屏幕时,时间几乎快了两倍。要下载文件,我使用 wget 的移植版本。这是我的问题:

屏幕关闭时Android会降低下载速率吗?

或者由于应用程序上的屏幕获得了唤醒锁,强制 CPU 始终处于开启状态,因此下载过程花费了更多的 CPU 周期.. 我有点困惑..

4

1 回答 1

13

简短的回答是肯定的,Android 有时会在屏幕关闭时降低下载速率。根据这个 Android 错误报告(由 90 位用户加星标),

似乎即使将“Wifi 睡眠策略”设置为“从不”,某些 Android 设备上的 wifi 也会在屏幕关闭时进入省电模式(又名 PSP 模式)。

PSP 模式显然会导致 wifi 设备进入睡眠状态,但会定期唤醒并要求其接入点将在设备处于睡眠状态时发送到的数据包传送到设备。这必然会导致额外的“尖峰”网络延迟。这种额外的延迟意味着一些面向网络的应用程序在屏幕关闭时会遇到问题。

这或多或少与您所描述的行为相关。此问题仅影响部分手机,并非全部,仅影响部分 Android 版本。我建议你访问上面的错误报告,关于这个问题的讨论很长。

如何解决这个问题

Android 2.3 至少有一个解决方法:您需要获取WIFI_MODE_HIGH_PERF 锁

在这种 Wi-Fi 锁定模式下,Wi-Fi 将像 WIFI_MODE_FULL 模式一样保持活动状态,但即使设备屏幕关闭,它也会以高性能运行,丢包率最低且数据包延迟低。此模式将消耗更多功率,因此仅在需要此类活动连接时才应使用。

Android中的CPU时钟缩放

Android 基于 Linux 内核,使用CPUFreq调节器来调整 CPU 频率以节省电池。确切的政策和频率因供应商而异,并且可能会发生变化。还有一些实用程序可以让您调整这些策略,但它们都需要有根电话。通常,Android 手机会在屏幕关闭时降低 CPU 频率并使用“省电”调节器。

但是,我不认为手机上的网络流量受 CPU 限制。也就是说,即使在省电模式下,网络吞吐量也是瓶颈,而不是 CPU 速度。

于 2011-10-15T03:18:17.107 回答