ImageSwitcher を使用して、サーバーから複数の画像をスライドショーとして表示しています。ImageSwitcher が初期化される前に、Picasso ライブラリで画像をプリロードしたいと考えています。
私たちのサーバーは画像に基本認証を必要とするため、インターセプターで 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 を呼び出すたびに、デバイスの使用メモリが少し増えます。