2017-09-23 65 views
-1

我正在开发一个Android应用程序,我需要在recyclerview中显示一些图像。我想一次下载图像,并可能将其保存在android的缓存或内部存储器中,然后在内部存储器中显示图像,如果存储器中有图像,并且不存在,则从服务器加载和下载。如何缓存来自服务器的Android中的图像并显示它?

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

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

缓存内存和内部存储之间是否有区别?我需要将图像保存在缓存中吗?

编辑:

我的问题是从一个由@Dima建议,在这个问题他没有缓存图像或将其保存在内部存储不同,我估计。

+0

[缓存图像和显示]的可能重复(https://stackoverflow.com/questions/16789676/caching-images-and-displaying) –

回答

-1

滑翔是一个伟大的图书馆异步显示图像。

滑翔的磁盘高速缓存策略:

滑翔3.X & 4.x版:DiskCacheStrategy.NONE缓存任何东西,因为讨论

滑翔4.x版:只有DiskCacheStrategy.SOURCE缓存:DiskCacheStrategy.DATA,滑翔3.X原始的全分辨率图像。在我们上面的示例中,这将是1000x1000像素之一

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

滑翔4.x的只有:DiskCacheStrategy.AUTOMATIC智能选择基于滑翔4.x中的资源(默认行为)

滑翔3.x的缓存策略& 4.x版:DiskCacheStrategy.ALL缓存图像的所有版本 作为最后一个例子,如果你有一张你知道经常操作的图像,它的不同版本,只缓存原始分辨率是有意义的。因此,我们会告诉滑翔只保留原来的:

例如:

滑翔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); 

和缓存会在您的应用程序的数据文件夹中,所以不会显示在用户库中。

相关问题