Android 如何加快音频文件的下载和存储过程?

Android 如何加快音频文件的下载和存储过程?,android,Android,在用户首次启动应用程序时,我必须下载并存储大量音频(.mp3)和图像。 单个图像和音频文件的大小很小,两者大致相同。图像的数量是音频的两倍。所以,为了下载图像,我使用的是一种工作完美且速度非常快的软件。至于音频文件,我使用以下代码: URL url = new URL(urlString); URLConnection connection = url.openConnection(); connection.connect(); InputStream input = new Buffere

在用户首次启动应用程序时,我必须下载并存储大量音频(.mp3)和图像。 单个图像和音频文件的大小很小,两者大致相同。图像的数量是音频的两倍。所以,为了下载图像,我使用的是一种工作完美且速度非常快的软件。至于音频文件,我使用以下代码:

URL url = new URL(urlString);
URLConnection connection = url.openConnection();
connection.connect();

InputStream input = new BufferedInputStream(url.openStream());
FileOutputStream output = new FileOutputStream(file);

byte data[] = new byte[1024];

while((count = input.read(data)) != -1) {
     output.write(data, 0, count);
}

output.flush();

问题在于,与在相同网络速度下下载图像的过程相比,上述下载和存储音频文件的过程需要很长时间才能完成。那么,为什么这个过程需要这么长时间,有没有办法加速这个过程,也许与截击速度相当?

< P>使用多线程你可能会得到一些改进。 您可以创建可运行线程的列表,迭代每个线程并逐个启动所有线程

给每个线程一些文件

不要忘记使用join()方法将所有线程彼此连接起来


希望这对你有所帮助

你为什么不在mp3上使用截击呢?
字节数据[]=新字节[1024]。我会使用更大的缓冲区。@greenapps我也可以使用凌空来播放mp3吗???我该怎么做??你能给我举个例子吗。我本来想问这个问题,但我想volley只能用于json响应和图像获取。我不知道。它是下载文件的东西。Volley是否无法下载到文件系统?奇怪的疏忽。否则请使用DownLoadManager。@greenapps是的,下载管理器将是我的下一个选择(在做了一些研究之后)。你建议使用更大的缓冲区。对这个值有什么建议吗?这个方法会不会在设备上消耗大量的带宽和电池?不会,它不会消耗更多的带宽。假设您想下载20MB的文件。如果您创建一个线程来下载,那么它将消耗20MB。如果启动2个线程,则每个线程消耗10MB。是的,它需要更多的电池。我试过了,但对我没有多大帮助:-(结果有所改善,但没有那么多。无论如何,谢谢你的回答。