Search code examples
androidfacebook-graph-apipicasso

Picasso Not Loading HTTP Facebook Link (NOT DUPLICATED)


Before you set the question/issue as duplicate, please read it all first.

I know it is a known issue and there's loads of question on Stackoverflow and issues on Github but believe me I tried them all.

ISSUE

Not loading this link:

https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/13872950_1066865640060722_8272182690153279858_n.jpg?oh=66a4ff80019c1fbf79bee45d32f03468&oe=59F65F50

MY CODE

    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);

WHAT I HAVE TRIED

NO CACHE: Picasso.with(getContext()).load(me.getPicture().getUrl()).memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE).into(target);

NEW DOWNLOADER:

`new Picasso.Builder(getContext()).downloader(new OkHttpDownloader(getContext())).build().load(me.getPicture().getUrl()).into(target);`

BOTH:

`new Picasso.Builder(getContext()).downloader(new OkHttpDownloader(getContext())).build().load(me.getPicture().getUrl()).memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE).into(target);`

What am I doing wrong?


Solution

  • Ok so the question was answered here:

    https://github.com/square/picasso/issues/1658

    My mistake was creating the Target as a local method property then when Picasso took a little bit more time to load the image maybe the Garbage Collector cleaned the Target reference which was make it impossible to Picasso to load it into the Target. That is why it SOMETIMES it worked.

    SOLUTION

    Create Target object as a global property inside the Activity to hold its reference for as long as you use the imageView you want to load the image into. That fixed the issue. :)

    Thanks guys!