Android 如何加快音频文件的下载和存储过程?
在用户首次启动应用程序时,我必须下载并存储大量音频(.mp3)和图像。 单个图像和音频文件的大小很小,两者大致相同。图像的数量是音频的两倍。所以,为了下载图像,我使用的是一种工作完美且速度非常快的软件。至于音频文件,我使用以下代码:Android 如何加快音频文件的下载和存储过程?,android,Android,在用户首次启动应用程序时,我必须下载并存储大量音频(.mp3)和图像。 单个图像和音频文件的大小很小,两者大致相同。图像的数量是音频的两倍。所以,为了下载图像,我使用的是一种工作完美且速度非常快的软件。至于音频文件,我使用以下代码: URL url = new URL(urlString); URLConnection connection = url.openConnection(); connection.connect(); InputStream input = new Buffere
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。是的,它需要更多的电池。我试过了,但对我没有多大帮助:-(结果有所改善,但没有那么多。无论如何,谢谢你的回答。