2016-05-23 7 views
0

ich eine LinkedHashMap wie so haben entfernt wird:Wie Hörer von LinkedHashMap Objekte zu entfernen, wenn der Schlüssel

private LinkedHashMap<String, Column> columns = new LinkedHashMap<>();

Und ich ein Column hinzufügen:

columns.put(name, column);

Wo ein Column hat ein Objekt mit Zuhörern.

Wenn ich die Spalte entfernen :

columns.remove(name);

Die Zuhörer sind noch aktiv.

Ich habe versucht, die WeakHashMap und das half in der Tat und die Hörer waren nicht mehr aktiv.

Aber WeakHashMapbehält die Reihenfolge nicht bei.

Ich habe auch versucht, die Column setzen Sie es auf null und dann entfernen Sie den Schlüssel aus der Karte, aber kein Glück. Hörer waren noch aktiv.

Gibt es einen Vorschlag dafür? Fehle ich etwas?

Antwort

0

Ich habe mit der Umsetzung onStart und onDestroy Lifecycle-Ereignisse am Ende, wenn sie aus den LinkedHashMap entfernen.

Beeinflusst von Android Entwicklung, Aktivitäten und Dienstleistungen

1

Sie müssen sie aus der Säule entfernen, nicht die HashMap

+0

Sicher, aber ich entferne die Spalten nicht die Zuhörer. Irgendwelche Ideen? Eine Spalte kann einen Listener haben oder nicht. Ich habe versucht, Vanille auf diesem zB entfernenColumn und getan, um zu vermeiden, zuerst die Spalte zu bekommen, dann prüfen, ob es einen Listener hat, entfernen Listener etc. Ich verstehe hauptsächlich nicht, warum das Objekt nicht gc ist –

+0

Ended mit diesem. Hinzufügen von Onstart- und Ondestroy-Lifecycle-Aufrufen –

Verwandte Themen