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 时保留其引用。这解决了问题。 :)

谢谢大家!