Android 如何在其他活动中重用已下载的映像?

Android 如何在其他活动中重用已下载的映像?,android,android-intent,android-glide,Android,Android Intent,Android Glide,我已经使用Glide library下载了一个图像,但我想在另一个活动中重用该图像,而无需再次下载。怎么做 我曾尝试使用.diskCacheStrategy(diskCacheStrategy.ALL),但我不知道下一步该怎么做 Glide.with(activityContext) .load(posterURL) .into(holder.poster); 我希望我可以将它作为一个额外的数据以图像而不是URL的形式传递给int

我已经使用Glide library下载了一个图像,但我想在另一个活动中重用该图像,而无需再次下载。怎么做

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

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

我希望我可以将它作为一个额外的数据以图像而不是URL的形式传递给intent,您可以通过多种方式来实现这一点

1) 在其他活动中使用相同的URL,无论您想在何处使用Glide加载图像,就像您当前所做的那样

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

要通过滑动获取位图,请使用以下代码

   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,因此可以毫无顾虑地传递它。

如果使用
.diskCacheStrategy(diskCacheStrategy.ALL)
它将只在第一次下载它。 第二次加载图像并使用相同的
URL
时,它将从
缓存中获取图像


因此,只需将
URL
传递给另一个
活动
,并使用相同的
Glide
code

即可将posterURL转换为
String
并传递给另一个活动。然后从receiver类,您可以将其转换回
URI
。这个想法是,在将图像转换为URI后,我必须再次下载该图像,这是我不想做的事情-@JohnJoeNo,您不需要再次下载它。您只是从Sender类收到它。好的,我知道了,但是在这种情况下,
.diskCacheStrategy(diskCacheStrategy.ALL)
不会被使用,对吗@JohnJoePass位图是一种糟糕的做法。如果位图很大怎么办?是的,你是对的。。。但至少有一种方法可以做到:)非常感谢,这正是我想要的:)