问题是
Firebase
未缓存图像(请参阅
here
了解更多详细信息)。
您应该能够配置
Glide
要在本地缓存图像,请执行以下操作(请参见
here
更多):
@GlideModule
public class GiphyGlideModule extends AppGlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
builder.setMemoryCache(new LruResourceCache(10 * 1024 * 1024));
}
@Override
public void registerComponents(Context context, Glide glide, Registry registry) {
registry.append(Api.GifResult.class, InputStream.class, new GiphyModelLoader.Factory());
}
}
那么您只需添加:
.diskCacheStrategy(DiskCacheStrategy.ALL)
听你的电话。类似于:
GlideApp.with(profileIcon.context)
.load(customerPictureReference)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.centerCrop()
.placeholder(R.drawable.ic_profile_placeholder)
.into(profileIcon)
您可以使用的另一个选项是
Picasso
这也将缓存图像。
要首先从本地缓存中检索图像,如果无法联机尝试,可以使用以下方法:
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");
}
});
}
});