devo un'attività che è simile al seguente:Perdita di memoria in android.os.Message e/o Handler.removeCallback?
class MyActivity extends Activity {
Runnable refreshTimer = new Runnable() {
public void run() {
refresh();
}
};
protected onCreate(...) {
handler.postAtTime(refreshTimer, ...);
}
protected onDestroy() {
handler.removeCallbacks(refreshTimer);
}
protected void refresh() { ... }
}
Dopo OnDestroy si chiama, ci sono ancora messaggi nella MessageQueue della attività che contengono riferimenti a MyActivity $ 0 (l'aggiornamento Runnable) per qualche motivo. Poiché MyActivity $ 0 ha un riferimento implicito a MyActivity, ciò provoca una perdita di memoria del contesto MyActivity.
Il risultato di merge_shortest_paths per android.app.Activity escluso fantasma,, deboli, riferimenti ecc morbide con Eclipse Memory Analyzer Strumento:
(Il codice sorgente sopra è una semplificazione del rapporto oggetto reale visualizzato nel la discarica MAT)
non dovrebbe chiamare removeCallbacks rimuovere tutti i riferimenti agli oggetti eseguibili dalla coda? Perché sto perdendo contesti?