3

I'm displaying multiple images from our server as a slideshow with a ImageSwitcher. Before the ImageSwitcher gets initialized I want to preload the images with Picasso library.

I want to say that I use Picasso with an interceptor, because our server requires Basic Authentication for the images.

My current preloading:

final int[] downloadedCounter = {0};
for (int i = 0; i < images.size(); i++) {
    final SlideshowImage image = images.get(i);

    PicassoUtils.getPicassoWithBasicAuthorizationFrom(user, getContext())
                .load(image.getImageUrl())
                .fetch(new Callback() {
                    @Override
                    public void onSuccess() {
                        downloadedCounter[0]++;

                        if (downloadedCounter[0] == images.size()) {
                            callback.downloadFinished();
                        }
                    }

                    @Override
                    public void onError() {

                    }
                });
}

And that is my ImageSwitcher:

ImageView image = (ImageView) this.getNextView();
PicassoUtils.getPicassoWithBasicAuthorizationFrom(user, getContext())
        .load(imageUrl)
        .noFade()
        .into(image, new Callback() {
            @Override
            public void onSuccess() {
                showNext();
            }

            @Override
            public void onError() {
             }
        });

But the problem is, that it won't get cached, because when I use .networkPolicy(NetworkPolicy.OFFLINE) on Picasso in my ImageSwitcher nothing gets loaded.

And everytime i call showNext() in my ViewSwitcher the used memory of the device rises a bit.

PatrickMA
  • 887
  • 9
  • 23

0 Answers0