如何在另一个 activity 中重复使用下载的图像?

How to reuse a downloaded image in another activity?

我已经使用 Glide 库下载了一张图片,但我想在另一个 activity 中 重复使用 该图片,而无需再次下载。怎么做?

我已经尝试使用 .diskCacheStrategy(DiskCacheStrategy.ALL) 但我不知道下一步该怎么做..

Glide.with(activityContext)
                .load(posterURL)
                .into(holder.poster);

我原以为我可以将它作为额外数据传递给 intent 作为图像而不是 URL

你可以通过多种方式做到这一点

1) 在其他 Activity 中使用相同的 URL 任何你想像当前一样使用 Glide 加载图像的地方。

2) 可以从Glid获取位图,可以写入目录保存路径。并使用相同的文件路径解码其他 activity.

中的图像

要通过 Glide 使用下面的代码获取位图

   Glide.with(mContext)
        .asBitmap()
        .load("url")
        .into(new CustomTarget<Bitmap>() {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
               //resource is the bitmap you can use
            }

            @Override
            public void onLoadCleared(@Nullable Drawable placeholder) {
            }
        });

注意:如果您不想写入文件,您可以保留该资源位图并将该位图传递给其他人Activity。

使用下面的代码

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);

并使用下面的代码检索图像

 Intent intent = getIntent(); 
 Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");

重要的一点是 Bitmap 实现了 Parcelable,所以它可以毫无顾虑地通过。

如果您使用.diskCacheStrategy(DiskCacheStrategy.ALL),它只会在第一次下载。 第二次加载图像并使用相同的 URL 时,它将从 Cache.

获取图像

所以只需将 URL 传递给另一个 Activity 并使用相同的 Glide 代码