【问题标题】:How to Cache Images in Android coming from server and show it?如何在Android中缓存来自服务器的图像并显示它?
【发布时间】:2017-09-24 01:05:38
【问题描述】:

我正在开发一个 Android 应用程序,我需要在回收站视图中显示一些图像。我想立即下载图像,并可能将其保存在 android 的缓存或内部存储中,然后如果存储中有图像,则显示内部存储中的图像,如果没有,则从服务器加载和下载。

而且我不希望这些图片出现在用户的图库应用中。

我只想知道架构,而不是关于如何做的代码。

缓存和内部存储有什么区别吗?我需要获得将图像保存在缓存中的权限吗?

编辑:

我的问题与@Dima 提出的问题不同,在那个问题上,我认为他没有缓存图像或将其保存在内部存储中。

【问题讨论】:

标签: android image picasso


【解决方案1】:

Glide 是一个很棒的异步显示图像库。

Glide 的磁盘缓存策略:

Glide 3.x 和 4.x:DiskCacheStrategy.NONE 没有缓存,如前所述

Glide 4.x:DiskCacheStrategy.DATA,Glide 3.x:DiskCacheStrategy.SOURCE 仅缓存原始全分辨率图像。在我们上面的示例中,这将是 1000x1000 像素的一个

Glide 4.x:DiskCacheStrategy.RESOURCE Glide 3.x:DiskCacheStrategy.RESULT 仅缓存最终图像,在降低分辨率(以及可能的转换)之后(Glide 3.x 的默认行为)

仅限 Glide 4.x:DiskCacheStrategy.AUTOMATIC 根据资源智能选择缓存策略(Glide 4.x 的默认行为)

Glide 3.x & 4.x:DiskCacheStrategy.ALL 缓存图像的所有版本 作为最后一个示例,如果您知道您会经常操作并制作一堆不同版本的图像,那么仅缓存原始分辨率是有意义的。因此,我们会告诉 Glide 只保留原始文件:

示例:

滑翔 4.x

GlideApp  
    .with(context)
      .load(eatFoodyImages[2])
      .diskCacheStrategy(DiskCacheStrategy.DATA)
      .into(imageView3);

滑翔 3.x

Glide  
    .with( context )
    .load( eatFoodyImages[2] )
    .diskCacheStrategy( DiskCacheStrategy.SOURCE )
    .into( imageViewFile );

缓存将在您应用的数据文件夹中,因此不会显示在用户库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 2018-08-17
    • 2022-01-19
    • 2012-10-06
    • 1970-01-01
    • 2013-10-21
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多