Autore Topic: Handler e inner classes  (Letto 578 volte)

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Handler e inner classes
« il: 04 Settembre 2013, 22:04:05 CEST »
0
Ciao a tutti, stavo leggendo su vari blog per avere tutte le informazioni disponibili riguardanti gli errori di tipo OOM dovuti a Thread che compiono lavori extra o non terminanao, immagini etc. In particolare mi sono imbattuto nel classico post di Roman Guy http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/. Sull'ultimo punto ho trovato un interessante articolo qui:
http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html e mi chiedevo: se si consiglia di dichiarare statiche le classi figlie dichiarate all'interno di classi madri e dichiarare una referenza a ques'tultima di tipo WeakReference, bisognerebbe farlo con tutte le classi figlie? Qui si fa l'esempio del Handler ma a quanto pare si consiglia di farlo anche alle altre classi figlie. Cosa ne pensate?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Handler e inner classes
« Risposta #1 il: 05 Settembre 2013, 11:22:28 CEST »
0
Non credo sia necessario farlo con tutte le classi figlie ma solo quelle hanno un ciclo di vita diverso da quello dell'Activity che le contiene, come ad Handler e AsyncTask.

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Handler e inner classes
« Risposta #2 il: 05 Settembre 2013, 16:37:51 CEST »
0
Grazie per la risposta, quindi pensi che sa bene adottare quel sistema anche nelle mie classi figlie del tipo:

Codice (Java): [Seleziona]
class PhotosLoader extends Thread {...

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Handler e inner classes
« Risposta #3 il: 05 Settembre 2013, 16:54:52 CEST »
0
Grazie per la risposta, quindi pensi che sa bene adottare quel sistema anche nelle mie classi figlie del tipo:

Codice (Java): [Seleziona]
class PhotosLoader extends Thread {...

In questo caso direi di si. Io la farei statica e gli passerei l'activity e la salverei in una WeakReference.

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Handler e inner classes
« Risposta #4 il: 05 Settembre 2013, 17:21:43 CEST »
0
Ok ci provo, ma a me sembra che qualsiasi cosa uno faccia per non andare OOM si riduca solo il rischio o il tempo ma se hai molte immagini non è che puoi fare un gran che. Ho provato ad utilizzare tutte le accortezze possibili immaginabili per non uscire OOM ma l'heap cresce scempre anche lentamente..