Picasso 未加载 HTTP Facebook Link(未重复)
Picasso Not Loading HTTP Facebook Link (NOT DUPLICATED)
在将 question/issue 设置为重复之前,请先全部阅读。
我知道这是一个已知问题,Whosebug 上有很多问题,Github 上也有很多问题,但请相信我,我都试过了。
问题
没有加载这个link:
https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/13872950_1066865640060722_8272182690153279858_n.jpg?oh=66a4ff80019c1fbf79bee45d32f03468&oe=59F65F50
我的代码
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
userPicture.setImageDrawable(FunctionUtil.roundBitmap(bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
Resources resources = getContext().getResources();
Bitmap bitmap = BitmapFactory.decodeResource(resources, R.drawable.ic_image_content_error);
userPicture.setImageDrawable(FunctionUtil.roundBitmap(bitmap));
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
Resources resources = getContext().getResources();
Bitmap bitmap = BitmapFactory.decodeResource(resources, R.drawable.ic_image_placeholder);
userPicture.setImageDrawable(FunctionUtil.roundBitmap(bitmap));
}
};
Picasso.with(getContext()).load(me.getPicture().getUrl()).into(target);
我尝试了什么
无缓存:
Picasso.with(getContext()).load(me.getPicture().getUrl()).memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE).into(target);
新下载者:
`new Picasso.Builder(getContext()).downloader(new OkHttpDownloader(getContext())).build().load(me.getPicture().getUrl()).into(target);`
两个:
`new Picasso.Builder(getContext()).downloader(new OkHttpDownloader(getContext())).build().load(me.getPicture().getUrl()).memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE).into(target);`
我做错了什么?
好的,问题在这里得到了回答:
https://github.com/square/picasso/issues/1658
我的错误是将 Target 创建为本地方法 属性 然后当 Picasso 花费更多时间加载图像时,垃圾收集器可能清理了 Target 引用,这使得 Picasso 无法加载它进入目标。这就是它有时有效的原因。
解决方案
在 Activity 中将 Target 对象创建为全局 属性 以在您使用要将图像加载到其中的 imageView 时保留其引用。这解决了问题。 :)
谢谢大家!
在将 question/issue 设置为重复之前,请先全部阅读。
我知道这是一个已知问题,Whosebug 上有很多问题,Github 上也有很多问题,但请相信我,我都试过了。
问题
没有加载这个link:
https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/13872950_1066865640060722_8272182690153279858_n.jpg?oh=66a4ff80019c1fbf79bee45d32f03468&oe=59F65F50
我的代码
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
userPicture.setImageDrawable(FunctionUtil.roundBitmap(bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
Resources resources = getContext().getResources();
Bitmap bitmap = BitmapFactory.decodeResource(resources, R.drawable.ic_image_content_error);
userPicture.setImageDrawable(FunctionUtil.roundBitmap(bitmap));
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
Resources resources = getContext().getResources();
Bitmap bitmap = BitmapFactory.decodeResource(resources, R.drawable.ic_image_placeholder);
userPicture.setImageDrawable(FunctionUtil.roundBitmap(bitmap));
}
};
Picasso.with(getContext()).load(me.getPicture().getUrl()).into(target);
我尝试了什么
无缓存:
Picasso.with(getContext()).load(me.getPicture().getUrl()).memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE).into(target);
新下载者:
`new Picasso.Builder(getContext()).downloader(new OkHttpDownloader(getContext())).build().load(me.getPicture().getUrl()).into(target);`
两个:
`new Picasso.Builder(getContext()).downloader(new OkHttpDownloader(getContext())).build().load(me.getPicture().getUrl()).memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE).into(target);`
我做错了什么?
好的,问题在这里得到了回答:
https://github.com/square/picasso/issues/1658
我的错误是将 Target 创建为本地方法 属性 然后当 Picasso 花费更多时间加载图像时,垃圾收集器可能清理了 Target 引用,这使得 Picasso 无法加载它进入目标。这就是它有时有效的原因。
解决方案
在 Activity 中将 Target 对象创建为全局 属性 以在您使用要将图像加载到其中的 imageView 时保留其引用。这解决了问题。 :)
谢谢大家!