Java 用于在后台下载图像的异步任务

Java 用于在后台下载图像的异步任务,java,android,android-asynctask,Java,Android,Android Asynctask,我的应用程序一个接一个地向用户显示图像。这些图像是从服务器下载的。因为我不想让用户等待图像被下载,所以我将这些图像缓存在本地文件系统中(比如新的50个图像) 实施: 从onCreate方法启动一个异步任务,该任务将在后台下载图像。 AsyncTask最适合这个用例吗?我不想使用服务,因为我不想持续下载 AsyncTask最适合此用途吗?是的,您可以使用AsyncTask进行此用途。使用Asynctask“onProgressUpdate()的其中一个API,您可以在下载图像时并行更新UI。是的,

我的应用程序一个接一个地向用户显示图像。这些图像是从服务器下载的。因为我不想让用户等待图像被下载,所以我将这些图像缓存在本地文件系统中(比如新的50个图像)

实施: 从onCreate方法启动一个
异步任务
,该任务将在后台下载图像。
AsyncTask
最适合这个用例吗?我不想使用
服务
,因为我不想持续下载


AsyncTask
最适合此用途吗?

是的,您可以使用AsyncTask进行此用途。使用Asynctask“onProgressUpdate()的其中一个API,您可以在下载图像时并行更新UI。

是的,您可以为此目的使用Asynctask。使用Asynctask“onProgressUpdate()的其中一个API,您可以在下载图像时并行更新UI。

是的,为此,可以使用Asynctask。使用Asynctask“onProgressUpdate()的其中一个API,您可以在下载图像时并行更新UI。

是的,您可以为此使用Asynctask。使用Asynctask“onProgressUpdate()的其中一个API,您可以在下载图像时同时更新UI。

您可以使用
universalImageLoader
库高效地下载图像

看到这个了吗


满足您需求的另一个解决方案是

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

看到这个了吗


满足您需求的另一个解决方案是

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

看到这个了吗


满足您需求的另一个解决方案是

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

看到这个了吗


另一个满足您需求的解决方案是

我建议使用现有的库,例如(通过Square)或(通过Google)

毕加索特别易于实施,并将出色地为您的目的而工作,其简单程度如下:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
您不必担心AsyncTasks或AsyncTaskLoader,因为该库将所有这些都从您手中解放出来,将图像缓存在内存和磁盘中

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

  • 异步任务可能不适合,因为它们与单个活动直接耦合;您将需要一个加载器或类似于加载器的机制,以便将结果交付给任何需要映像的活动
  • 在较旧的设备上,位图驻留在不由GC管理的特殊内存区域中;使用完位图后,您必须手动处理它们
  • 位图占用大量内存,需要小心管理以避免出现OOMEs,例如在LruCache中加载和存储内存时对其进行下采样
  • 将图像写入磁盘时,请注意管理图像缓存目录的大小

    • 我建议使用现有的库,例如(通过Square)或(通过谷歌)

      毕加索特别易于实施,并将出色地为您的目的而工作,其简单程度如下:

      Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
      
      您不必担心AsyncTasks或AsyncTaskLoader,因为该库将所有这些都从您手中解放出来,将图像缓存在内存和磁盘中

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

      • 异步任务可能不适合,因为它们与单个活动直接耦合;您将需要一个加载器或类似于加载器的机制,以便将结果交付给任何需要映像的活动
      • 在较旧的设备上,位图驻留在不由GC管理的特殊内存区域中;使用完位图后,您必须手动处理它们
      • 位图占用大量内存,需要小心管理以避免出现OOMEs,例如在LruCache中加载和存储内存时对其进行下采样
      • 将图像写入磁盘时,请注意管理图像缓存目录的大小

        • 我建议使用现有的库,例如(通过Square)或(通过谷歌)

          毕加索特别易于实施,并将出色地为您的目的而工作,其简单程度如下:

          Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
          
          您不必担心AsyncTasks或AsyncTaskLoader,因为该库将所有这些都从您手中解放出来,将图像缓存在内存和磁盘中

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

          • 异步任务可能不适合,因为它们与单个活动直接耦合;您将需要一个加载器或类似于加载器的机制,以便将结果交付给任何需要映像的活动
          • 在较旧的设备上,位图驻留在不由GC管理的特殊内存区域中;使用完位图后,您必须手动处理它们
          • 位图占用大量内存,需要小心管理以避免出现OOMEs,例如在LruCache中加载和存储内存时对其进行下采样
          • 将图像写入磁盘时,请注意管理图像缓存目录的大小

            • 我建议使用现有的库,例如(通过Square)或(通过谷歌)

              毕加索特别易于实施,并将出色地为您的目的而工作,其简单程度如下:

              Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
              
              您不必担心AsyncTasks或AsyncTaskLoader,因为该库将所有这些都从您手中解放出来,将图像缓存在内存和磁盘中

              如果您坚持构建自己的解决方案,我建议您四处看看