android - 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();
}
解决方案
在一段时间内不断存储写入文件使 CPU 工作非常辛苦。同样在线程数较少的设备中,它也会崩溃。
我建议您使用较少的线程数,只需 1 或 2 个,这样您就可以让 CPU 执行其他任务并避免性能不佳。
DEFAULT_NETWORK_THREAD_POOL_SIZE = 2
推荐阅读
- sql-server - T-SQL n 行表示 2 天之间的天数
- sql - SQL Merge - 仅插入特定列已更新的位置
- python - 图片保存后不显示
- typescript - TypeScript:具有除一个之外的任何键的对象
- java - 使用 Netty 接收到的消息是否有可能出现故障或受限?
- redis - HMSET 和字段值
- db2 - DB2 从多个用户的数据库中撤销用户权限
- google-cloud-platform - NestJS - 将静态(非导入)文件复制到 dist 文件夹的正确方法
- python - Django-Rest-Framework 文件上传
- visual-studio - 删除 .dsp 和 .dsw 文件是否安全?