我正在使用volley从我可以访问的云中下载字节数组数据。
我的实现有时会在一个for循环中执行大约200个请求,以获取200个数组(文件的平均大小为700KB,少数文件的大小高达1MB),并将它们存储在设备中。
我的问题是CPU使用率变得很高,尽管我知道volley有一个请求队列,并且它在缺省值DEFAULT_NETWORK_THREAD_POOL_SIZE = 4的同时只处理4个请求。
有人知道为什么会发生这种开销吗?是因为volley的缓存,还是因为在设备上写入文件的方法?
这是我用来将文件保存到设备上的代码
private void writeAudioFile(byte[] arrayByte, String name) throws
IOException {
FileOutputStream outputStream = new FileOutputStream(name);
outputStream.write(arrayByte);
outputStream.close();
}发布于 2019-06-18 00:36:04
在一段时间内不断地存储写入文件,使得CPU工作起来非常困难。同样,在线程数量较少的设备中,它也会崩溃。
我建议您使用较少的线程数量,只使用1到2个线程,这样您就可以让CPU执行其他任务,从而避免性能不佳。
DEFAULT_NETWORK_THREAD_POOL_SIZE = 2
https://stackoverflow.com/questions/56634355
复制相似问题