首页 > 解决方案 > Volley 网络并行请求

问题描述

我正在使用 volley 从我可以访问的云中下载字节数组数据。

我的实现有时在单个 for 循环中执行大约 200 个请求以获得 200 个数组(文件的平均大小为 700 KB,一些文件高达 1 MB)并将它们存储在设备中。

我的问题是 CPU 使用率变得疯狂,尽管我知道 volley 有一个请求队列,并且它只同时处理 4 个请求,默认值 DEFAULT_NETWORK_THREAD_POOL_SIZE = 4。

有谁知道为什么会发生这种开销,是因为 volley 的缓存还是在设备上写入文件的方法?

这是我用于将文件保存到设备的代码

private void writeAudioFile(byte[] arrayByte, String name) throws 
                  IOException {
     FileOutputStream outputStream = new FileOutputStream(name);
     outputStream.write(arrayByte);
     outputStream.close();
}

标签: androidandroid-volley

解决方案


在一段时间内不断存储写入文件使 CPU 工作非常辛苦。同样在线程数较少的设备中,它也会崩溃。

我建议您使用较少的线程数,只需 1 或 2 个,这样您就可以让 CPU 执行其他任务并避免性能不佳。

DEFAULT_NETWORK_THREAD_POOL_SIZE = 2


推荐阅读