gpt4 book ai didi

Android:如何限制下载速度

转载 作者:行者123 更新时间:2023-11-30 03:17:19 31 4
gpt4 key购买 nike

我使用 AndroidHttpClient 从互联网下载视频。有很多方法可以提高下载速度,但我想知道如何使用 AndroidHttpClientHttpURLConnection 来降低下载速度?是否有针对该解决方案或某些解决方案的接口(interface)或配置?

********* *******更新**** *************

做了一些测试,发现正如 Matthew Franglen 所建议的那样,Thread.sleep(value) 可以是一个解决方案。主要的魔法是确定线程休眠的。测试结果如下

no thread sleep
11-06 20:05:14.510: D/DownloadThread(6197): Current speed = 1793978

sleep 0.001s
11-06 20:02:28.433: D/DownloadThread(5290): Current speed = 339670

sleep 0.062
11-06 20:00:25.382: D/DownloadThread(4410): Current speed = 65036

sleep 0.125s
11-06 19:58:56.197: D/DownloadThread(3401): Current speed = 33383

sleep 0.25s
11-06 19:57:21.165: D/DownloadThread(2396): Current speed = 15877

sleep 0.5s
11-06 19:55:16.462: D/DownloadThread(1253): Current speed = 8061

sleep 1s
11-06 19:53:18.917: D/DownloadThread(31743): Current speed = 3979

测试显示如果休眠一秒钟,下载量会急剧下降到 1/450 左右!

虽然这取决于在下载循环中进行了哪些操作,并且取决于环境。这是具体情况下的实验结论

最佳答案

降低下载速度非常简单。只需更慢地从 InputStream 中读取:

public byte[] rateLimitedDownload(InputStream in, int bytesPerSecond) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[bytesPerSecond];
int read;

while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// nothing
}
}
return out.toByteArray();
}

此代码并不完美 - 不考虑实际从中读取的任何时间,并且读取次数可能少于预期。它应该会给你一个想法。

关于Android:如何限制下载速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19808396/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com