在内存中滑动缓存屏幕图像

Posted

技术标签:

【中文标题】在内存中滑动缓存屏幕图像【英文标题】:Glide caching off screen images in memory 【发布时间】:2015-06-15 06:02:16 【问题描述】:

我只想在内存中加载和缓存图像,而不是将它们传递给视图,然后当我需要将它们加载到 UI 上以从内存缓存中获取它们(如果它们存在于内存中)时。

我试过了:

Glide.with().load(uri).into(new SimpleTarget<GlideDrawable>(WIDTH,HEIGHT) 

     @Override
     public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) 
    //left empty
    
  
);

但是当我稍后调用在 ImageView 中加载该 uri 时,它仍然会从路径而不是内存中加载它。

是否有另一种方法可以将图像缓存在内存中而不将它们加载到 UI 上?

【问题讨论】:

【参考方案1】:

关于如何在后台线程缓存图像的文档可以在here找到。

以下是页面中的一些示例代码,展示了如何将文件下载到缓存,而不在 UI 中显示图像:

FutureTarget<File> future = Glide.with(applicationContext)
.load(yourUrl)
.downloadOnly(500, 500);

// Can be omitted if you only want to have the data cached (same goes for the "future" instance variable
File cacheFile = future.get();

但是,请确保您已配置 Glide 以启用缓存:https://github.com/bumptech/glide/wiki/Configuration

【讨论】:

【参考方案2】:

实际上我在 API 中找到了 preload 方法来实现这个目的: preload API change log

【讨论】:

以上是关于在内存中滑动缓存屏幕图像的主要内容,如果未能解决你的问题,请参考以下文章

UIImage缓存清除问题

清除滑动图像缓存 Android Studio

android如何释放图片缓存

Glide:在内存缓存中预加载图像(有或没有磁盘缓存)

IOS 中 AFNetworking 缓存图像中的内存泄漏

将 LRU 图像缓存与 HTTPResponseCache 结合用于磁盘和内存缓存