首页 > 解决方案 > 如何在再次保存之前检查图像是否已经在内存中?

问题描述

我注意到在优化我的应用程序的性能时,Glide 必须检查图像是否已经在缓存中。现在问题来了。

它是如何工作的?

使用下面的代码,我总是会在类开始时再次保存图像并加载。

所以:

    Glide.with(mContext).load(Objects.requireNonNull(user).getImageurl()).donloadOnly(new SimpleTarget <File>(){
        @Override
        public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation){
            OGGER.debug("Photo downloaded");

            }
    });

Glide.with(mContext).load(Objects.requireNonNull(user).getImageurl()).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(image_profile);

或者:

Glide.with(mContext).load(Objects.requireNonNull(user).getImageurl()).donloadOnly(new SimpleTarget <File>(){
    @Override
    public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation){
        OGGER.debug("Photo downloaded");

        Glide.with(mContext).load(Objects.requireNonNull(user).getImageurl()).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(image_profile);
        }
});

谢谢。:)

标签: javaandroidandroid-glide

解决方案


正如他们在 DOCS 中提到的:

默认情况下,Glide 在开始对图像的新请求之前会检查多层缓存:

  1. 活动资​​源 - 此图像现在是否显示在另一个视图中?
  2. 内存缓存 - 此图像是否最近加载并仍在内存中?
  3. 资源 - 此图像之前是否已解码、转换并写入磁盘缓存?
  4. 数据 - 此图像之前获得的数据是否已写入磁盘缓存?

我强烈建议您阅读它。 https://bumptech.github.io/glide/doc/caching.html#caching-in-glide

要将图像加载到ivImg(您的 ImageView)中,您只需执行以下操作:

Glide.with(context)
.load("http://via.placeholder.com/300.png")
.into(ivImg);

推荐阅读