如何在另一个活动中重用下载的图像?

时间:2019-05-07 14:53:04

标签: android android-intent android-glide

我已经使用Glide库下载图像,但是我想在另一个活动中重用该图像,而无需重新下载。怎么做?

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

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

我希望我可以将它作为额外的数据传递给图像,而不是作为URL

2 个答案:

答案 0 :(得分:1)

如果您使用.diskCacheStrategy(DiskCacheStrategy.ALL),它将仅首次下载。 第二次加载图像并使用相同的URL时,它将从Cache中获取图像。

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

答案 1 :(得分:0)

您可以通过多种方式来实现

1)无论您要使用Glide加载图像时,都在其他Activity中使用相同的URL。

2)您可以从Glid获取位图,并且可以写入目录并保存路径。并使用相同的文件路径对其他活动中的图像进行解码。

要通过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) {
            }
        });

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

为此,请使用以下代码

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

要检索图像,请使用以下代码

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

重要的一点是,位图实现了Parcelable,因此可以通过它而无需担心。