AsyncTask用于在后台下载图像

时间:2014-03-05 08:34:28

标签: java android android-asynctask

我的应用程序一个接一个地向用户显示图像。图像从服务器下载。由于我不希望用户等待下载图像,因此我在本地文件系统中缓存了这些图像(比如新的50张图像)。

实现: 从onCreate方法开始AsyncTask,它将继续在后台下载图像。 这个用例最适合AsyncTask吗?我不想使用Service,因为我不希望下载连续发生

AsyncTask最适合此目的吗?

3 个答案:

答案 0 :(得分:2)

我建议使用现有的图书馆,例如Picasso(广场)或Volley(Google)。

Picasso特别容易实现,并且可以很好地满足您的需求,并且非常简单:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

您不必关心AsyncTasks或AsyncTaskLoaders,因为库可以解决所有这些问题,将这些图像缓存在内存和磁盘上。

如果您坚持构建自己的解决方案,我建议您四处寻找相关问题,因为有很多事情要记住:

  • AsyncTasks可能不适合,因为它们直接与单个活动耦合;你需要一个Loader或类似于Loaders的机制来将结果传递给任何想要图像的活动。
  • 在较旧的设备上,位图位于不由GC管理的特殊内存区域中;当你完成它们时,你必须手动处理位图。
  • 位图使用大量内存,需要小心管理以避免OOME,例如在LruCache中加载和存储内存时对它们进行下采样。<​​/ li>
  • 在将图像写入磁盘时,请注意管理图像缓存目录的大小。

答案 1 :(得分:1)

是的,您可以将Asynctask用于此目的。使用Asynctask“onProgressUpdate()之一,您可以在下载图像时并行更新UI。

答案 2 :(得分:0)

您可以使用universalImageLoader库以有效的方式下载图像。

请参阅此how to use universal Image loader for downloading images

您的要求的另一个解决方案是Volley Library