在Glide for Android中离线时加载已获取的图像

【在Glide for Android中离线时加载已获取的图像】少年击剑更吹箫,剑气箫心一例消。这篇文章主要讲述在Glide for Android中离线时加载已获取的图像相关的知识,希望能为你提供帮助。
我使用的是Glide版本4.8.0
为了加载图像,我这样做

GlideApp .with(HomePageFragment.this) .load(remoteURL) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(mImageView);

当设备连接到Internet时,图像会成功,但是当设备脱机时,如何从remoteURL中已经填充的缓存加载相同的图像?
我的自定义AppGlideModule看起来像这样
@GlideModule public class CustomAppGlideModule extends AppGlideModule {@Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { builder.setMemoryCache(new LruResourceCache(20 * 1024 * 1024)); builder.setDiskCache(new InternalCacheDiskCacheFactory(context, 100 * 1024 * 1024)); }}

我也试过了
.onlyRetrieveFromCache(true)

但这也无济于事。
答案选项1:使用DiskCacheStrategy.SOURCE而不是DiskCacheStrategy.ALL它应该可以工作,因为DiskCacheStrategy.SOURCE将原始数据保存到缓存中。
//Version 4.x GlideApp .with(HomePageFragment.this) .load(remoteURL) .diskCacheStrategy(DiskCacheStrategy.DATA) .into(mImageView); //Version 3.x Glide.with(mContext) .load(url) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .into(imageView);

选项2 :(如果以上不起作用)
使用Glide的任何具体原因?你想给毕加索一个镜头,我发现毕加索要好得多。您可以使用以下代码进行脱机缓存。它将首先从离线服务,如果没有找到,然后搜索在线图像。
Picasso.with(getActivity()) .load(imageUrl) .networkPolicy(NetworkPolicy.OFFLINE) .into(imageView, new Callback() { @Override public void onSuccess() { //..image loaded from cache }@Override public void onError() { //Try again online if cache failed Picasso.with(getActivity()) .load(posts.get(position).getImageUrl()) .error(R.drawable.header) .into(imageView, new Callback() { @Override public void onSuccess() { //... image loaded from online }@Override public void onError() { Log.v("Picasso","Could not fetch image"); } }); } });


    推荐阅读