Autore Topic: Eccessivo carico sull\' Adapter  (Letto 309 volte)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1198
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Eccessivo carico sull\' Adapter
« il: 19 Dicembre 2014, 23:50:59 CET »
0
Salve a tutti.

Estendo un BaseAdapter per la mia lista/griglia.
Tutto funziona.....LENTO. Di una lentezza senza paragoni.

Nella mia riga di layout ho una imageView.di dimensioni 96dp x 96dp, Quindi non eccessive.
Per settare un immagine nell' adapter uso il metodo holder.imgRowIcon.setImageURI(Uri.fromFile(mio_file));
Finche si tratta di poche immagini in una lista di 40 elementi no problem, altrimenti il tutto crasha generando

Codice (Java): [Seleziona]
java.lang.OutOfMemoryError: Failed to allocate a 42024972 byte allocation with 386568 free bytes
Ho provato dunque a settare l'immagine con holder.imageview.setImageBitMap()
Qui la lista funziona, carica tutte le immagini, ma lo scrool è inesistente. Impossibile scrollare una lista cosi.
Il log mi segnala mentre eseguo lo scrool : Too much work on main thread o qualcosa di simile

Bene, mi viene da pensare ad un thread, AsynkTask o altro. Mi chiedevo, dato che è la prima volta che mi trovo alle strette, è giusto usare un thread? è meglio settare dei Bitmpa o farne a peno per quanto riguarda l'ImageView della riga del layout?


Post unito: 20 Dicembre 2014, 18:27:17 CET
Nessuno ha problematiche del genere?

UPDATE: ho inserito nell' Adapter l'avvio di un asynk nel caso si tratti di file immagine (Banalmente ho un metodo che ritorna true se è .jpeg .jpg .png)

Eppure il tutto risente ancora di enormi rallentamenti. Può essere causato da dei wrap content piuttosto che delle dimensioni fisse? Per esempio ho una TextView che effettua il ridimensionamento automatico in base alla stringa da visualizzare
« Ultima modifica: 20 Dicembre 2014, 18:27:18 CET da tonno16, Reason: Merged DoublePost »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 624
  • Respect: +136
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Eccessivo carico sull\' Adapter
« Risposta #1 il: 26 Dicembre 2014, 16:29:34 CET »
0
Invece di holder.imgRowIcon.setImageURI(Uri.fromFile(mio_file)); prova a caricare le immagini come spiegato in questo post:

http://stackoverflow.com/a/823966/466938
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1198
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Eccessivo carico sull\' Adapter
« Risposta #2 il: 26 Dicembre 2014, 17:33:45 CET »
0
Ho aperto un thread specifico dove oltre a descrivere meglio tutto il mio adapter e il mio obiettivo ho anche postato tutto il codice.
Sinceramente anche il setFromUri funziona bene, ma rimangono le problematiche descritte nel altro thread. Ho spulciato 10 mila codici su internet, non ricordo se ho provato questo da te postato. Provo appena arrivo a casa, grazie