Android:下载大量文件的正确方法

时间:2012-05-19 00:53:21

标签: android android-asynctask

在我的应用中,我需要下载一堆文件。我最初的计划是为每个文件使用单独的AsyncTask,这样我就可以在下载每个文件时通知应用程序的其余部分。我发现它测试的是,虽然这有效,但它看起来真的非常有效。有没有一种方法可以使用单个AsyncTask或者一个服务来下载文件并在每个文件上完成通知?

3 个答案:

答案 0 :(得分:1)

没有理由使用大量AsyncTask,因为您可以创建文件名列表,将其传递给单个AsyncTask,并在下载每个文件后,使用{发布下载进度{1}}和publishProgress(),它在UI线程中运行,可以轻松通知应用程序中的其他活动。

onProgressUpdate()

答案 1 :(得分:0)

远程服务可行,但我认为这是错误的方法,因为你的功能有限。

我会使用AsyncTask,但是通过方法调用它。

当您完成AsyncTask后,再次调用该方法,该方法将在删除列表中的项目或更新某个计数器后创建新的AsyncTask。

请记住,AsyncTask无法重复使用,因此每次都需要重新创建。

答案 2 :(得分:0)

从内存和网络的角度来看,最好只使用一个AsyncTask(或Java线程)并逐个下载所有文件。这极大地提高了设备​​的响应能力,并且还消耗了一点内存。 如果您可以控制服务器端,我还建议您将较小的文件压缩到一个存档(我的项目还通过HTTP下载大量文件),如果将文件合并到大小约为2的档案中,它会显示出极大的速度提升。 4 MB并下载。 如果您只使用TCP / IP连接下载,如果您不会每次都重新建立连接,那么文件有多大并不重要。 但对于HTTP来说,最大的浪费时间通常是连接建立。