3

我正在使用 ImageSwitcher 将来自我们服务器的多个图像显示为幻灯片。在 ImageSwitcher 被初始化之前,我想用 Picasso 库预加载图像。

我想说我使用带有拦截器的毕加索,因为我们的服务器需要对图像进行基本身份验证。

我当前的预加载:

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() {

                    }
                });
}

这就是我的 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() {
             }
        });

但问题是,它不会被缓存,因为当我.networkPolicy(NetworkPolicy.OFFLINE)在 ImageSwitcher 中的 Picasso 上使用时,什么都没有加载。

每次我调用showNext()ViewSwitcher 时,设备的已用内存都会增加一点。

4

0 回答 0