我有一些图片,当应用程序启动时,我从不同的网站下载,通过这样做:
Picasso.with(context).load(image_url).fetch();
现在,假设用户关闭应用程序并脱机。当应用程序再次启动时,毕加索会以这种方式显示图像:
Picasso.with(ctx).load(image_url).placeholder(R.drawable.ph).into(imageView);
问题是一些图像是从磁盘缓存中加载的(调试模式下的黄色三角形),而对于其他图像,Picasso显示占位符。
为什么?我希望每个图像都是从磁盘缓存中加载的。
发布于 2015-12-03 03:30:49
您可以通过此策略使用此代码,Picasso将在缓存中查找图像,如果失败,则将通过网络下载图像。
Picasso.with(context)
.load(Uri.parse(getItem(position).getStoryBigThumbUrl()))
.networkPolicy(NetworkPolicy.OFFLINE)
.into(holder.storyBigThumb, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
// Try again online if cache failed
Picasso.with(context)
.load(Uri.parse(getItem(position)
.getStoryBigThumbUrl()))
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(holder.storyBigThumb);
}
});
发布于 2016-07-02 06:45:01
这个逻辑在我身上起作用了:
if network is available:
Picasso.with(context).load(image).into(imageView);
else:
Picasso.with(context).load(image).networkPolicy(NetworkPolicy.OFFLINE).into(imageView);
发布于 2018-07-19 16:12:14
要避免创建单独的RequestCreator
like here实例,请执行以下操作:
RequestCreator request = mPicasso.load(TextUtils.isEmpty(imageUrl) ? null : imageUrl)
.placeholder(R.drawable.ic_default)
.error(R.drawable.ic_default)
.transform(transformations)
.noFade()
.centerCrop();
request
.networkPolicy(NetworkPolicy.OFFLINE)
.into(mImageView, new Callback.EmptyCallback(){
@Override
public void onError() {
super.onError();
request.into(mImageView);
}
});
https://stackoverflow.com/questions/23391523
复制相似问题