Nel nostro progetto abbiamo rilevato perdite di memoria dovute a callback di rete. La richiesta di rete viene generata da un frammento e la risposta ritorna attraverso un callback al frammento. Il problema è che quando l'utente lascia il frammento, non è garbage collection dal momento che il callback è legato ad esso. Quindi c'è una perdita di memoria.Riferimento debole per cattiva idea di callback di rete?
La mia soluzione proposta era di annullare il riferimento di callback su onStop del frammento. In questo modo, GC può prendersene cura.
Un'altra soluzione suggerita dal mio collega è quella di utilizzare WeakReference per i callback. Il problema è che il callback riceve spesso i garbage collection in modo tale da non ottenere nemmeno una risposta dai callback (alcune volte quando l'utente è in attesa di una risposta). Il problema è che Weak Reference può essere raccolto con garbage collection in qualsiasi momento.
Presumo in questo scenario, l'utilizzo di WeakReference non è una buona idea.
Cosa ne pensate?