我正在使用 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 时,设备的已用内存都会增加一点。