In unserem Projekt fanden wir Speicherverluste aufgrund von Netzwerkrückrufen. Die Netzwerkanforderung wird von einem Fragment ausgelöst und die Antwort wird durch einen Rückruf an das Fragment zurückgegeben. Das Problem ist, dass, wenn der Benutzer das Fragment verlässt, kein Müll gesammelt wird, da der Rückruf damit verbunden ist. Daher gibt es eine Erinnerung Leck.Schwache Referenz für Netzwerk Callback schlechte Idee?
Meine vorgeschlagene Lösung war die Callback-Referenz auf OnStop Fragment zu annullieren. Auf diese Weise kann GC sich darum kümmern.
Eine andere Lösung, die mein Mitarbeiter vorgeschlagen hat, ist, zu WeakReference zu den Rückrufen zu verwenden. Das Problem dabei ist, dass der Rückruf oft Müll sammelt, so dass wir nicht einmal eine Antwort von den Rückrufen erhalten (einige Zeit, wenn der Benutzer auf eine Antwort wartet). Das Problem ist Schwache Referenz kann Garbage Collection mit GC jederzeit gesammelt werden.
Ich nehme an, in diesem Szenario ist die Verwendung von WeakReference keine gute Idee.
Was denkst du?