Autore Topic: Caricamento asincrono di immagini  (Letto 730 volte)

Offline enos

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
Caricamento asincrono di immagini
« il: 20 Settembre 2010, 16:23:01 CEST »
0
Ciao a tutti,
scusate se mi rivolgo nuovamente a voi... ma in rete ho trovato solo risposte parziali o non funzionanti alla mia domanda!

Sto realizzando un'applicazione che scarica delle immagini dal web e le visualizza sullo schermo. Sebbene le immagini siano "leggere", il gran numero sovraccarica l'applicazione.

Che voi sappiate c'è modo di caricare le immagini in modo asincrono (con un thread separato)?

Grazie mille  :-)

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Caricamento asincrono di immagini
« Risposta #1 il: 20 Settembre 2010, 17:01:35 CEST »
0
Basta che avvii normalmente un nuovo thread che si occupa di salvare una immagine su una cartella (meglio se la cache) e avvisa il main thread quando una immagine è stata scaricata per visualizzarla...

Offline enos

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
Re:Caricamento asincrono di immagini
« Risposta #2 il: 21 Settembre 2010, 11:38:15 CEST »
0
Ok, ti dico la soluzione che sto provando ad implementare:

ho una classe TestIcona (extends Activity) che inizialmente visualizza sullo schermo 5 icone "standard".
Dopodichè crea un oggetto IconCallback (a cui passa un riferimento a se stesso) e poi avvia un thread LoaderIcon passandogli l'oggetto callback.
Quando LoaderIcon termina il caricamento invoca il metodo caricamentoTerminato() sul callback.

In questo metodo voglio "aggiornare" le immagini "standard" sulle icone, ma il codice

Codice (Java): [Seleziona]
public void caricamentoTerminato(Drawable [] icone){
               
                for (int i=0; i<icone.length; i++){
                        //setto icona per il marker
                        test.icone[i].invalidate();
                        test.icone[i].setImageDrawable(icone[i]);
                }
        }

fa crashare l'applicazione.

Forse uso il metodo sbagliato per aggiornare l'immagine?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Caricamento asincrono di immagini
« Risposta #3 il: 21 Settembre 2010, 12:19:08 CEST »
0
Questa riga mi puzza parecchio:

test.icone.setImageDrawable(icone);

cosa è test e cosa intendi fare???

Offline enos

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
Re:Caricamento asincrono di immagini
« Risposta #4 il: 21 Settembre 2010, 12:33:03 CEST »
0
cosa è test e cosa intendi fare???

Hai ragione, mi sono spiegato "poco" per evitare di incollare decine di righe di codice:

"test" è il riferimento alla activity posseduto dalla callback (le viene passato all'atto della creazione). In questo modo la callback, quando viene invocata da LoaderIcon "dovrebbe" poter aggiornare la schermata.
Con icone(i) accede ad un set di icone che ho creato nella activity.
« Ultima modifica: 21 Settembre 2010, 13:11:19 CEST da enos »

Offline enos

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
Re:Caricamento asincrono di immagini
« Risposta #5 il: 21 Settembre 2010, 17:31:55 CEST »
0