Próbuję załadować tablicę 20 adresów URL w tle z Picasso. Do tej pory mam następny kod:Ładowanie wielu obrazów z Picasso na tle
Log.d("GAME", "Loading all images");
for (int i = gamePieces.length-1; i >= 0; i--) {
GamePiece p = gamePieces[i];
Log.d("GAME", "I will load " + p.getImage());
Picasso.with(context).load(p.getImage()).into(target);
}
//loading the first one
Picasso.with(context).load(piece.getImage()).into(target);
A moja target
obiekt jest następny:
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
Log.d("GAME", "Image loaded" + ++test);
gameImage.setImageBitmap(bitmap); //ImageView to show the images
}
@Override
public void onBitmapFailed(Drawable arg0) {}
@Override
public void onPrepareLoad(Drawable arg0) {}
};
chcę wstępnie załadować obrazy więc mogę pokazać jeden po drugim w ImageView każdej chwili użytkownik klika przycisk.
Pierwsze zdjęcie ładuje się tak szybko (jest fajne), ale pozostałe obrazy w pętli for nigdy nie ładują się. Jak mogę to naprawić? Potrzebuję obrazów, aby rozpocząć ładowanie w pętli for.
1.) ZAWSZE utrzymuj silną referencję do Picasso Targets gdzieś, ponieważ sam Picasso k eep a WeakReference - a obiekt docelowy zostanie zebrany jako śmieci przed załadowaniem obrazu. 2.) Nie jestem do końca pewien, ale z kodu źródłowego wydaje się, że Picasso obsłuży tylko jedno żądanie dla każdej instancji Target lub ImageView, którą przekażesz do 'into()' - może popatrzysz (dis-)potwierdzać. –
@ david.mihola Jak mogę zachować silne odniesienie do celów Picassa? Co masz na myśli mówiąc "może spojrzeć na siebie (dis-) potwierdzić", czy jest to metoda? –