Garbage Collector und Objekte im Speicher

  • Antworten:4
SebastianE
  • Forum-Beiträge: 37

10.03.2012, 13:54:46 via Website

Hallo,
mal eine Verständnisfrage zum Garbage Collector. In einem Buch habe ich gelesen das er sich selbsttätig um die Activitys kümmert die nicht mehr verwendet werden, also die längere Zeit nicht mehr aufgerufen wurden jedoch noch im Speicher sind. Der Garbage Collector würde die Objekte aus dem Speicher entfernen so das man sich nicht selbst weiter darum kümmern müßte. Für mich klingt das schon irgendwie kritisch. Bei einer Activity könnte es ja problemlos sein die wieder neu in den Speicher zu laden falls sie nun doch wieder gebraucht würde.
Wie ist das aber wenn sich in der Activity eine ArrayList mit Werten befindet. Die Activity wurde länger nicht verwendet weil z.B. eine andere Activity längere Zeit auf dem Bildschirm aktiv ist.
Wenn der Garbage Collector die Activity die längere Zeit nicht verwendet wurde nun abräumt sind doch auch die Daten aus der ArrayList verloren. Das gleiche gilt natürlich für alle (auch eigene Daten-) Objekte die sich in der Activity befanden.

Verstehe ich dabei etwas falsch? Kann man das irgendwie umgehen oder den GarbageCollector über die App beeinflussen?

Vielen Dank,
SebastianE

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

10.03.2012, 14:01:53 via Website

Du musst dir vorstellen das die Liste mit an der Activity hängt.
Räumt der GC auf schaut er ebenfalls an was deine Activity 'hängt'. Aber es gibt eben die livecycle methoden in dennen du werte die du
benötigst wiederherstellen musst wenn in der Task History zurück gesprungen wird.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
SebastianE
  • Forum-Beiträge: 37

10.03.2012, 14:46:58 via Website

Hy,
Danke für die Erklärung. Das bedeutet das ich selbst prüfen muß wann eine Activty vom GC aus dem Speicher geräumt wird und entsprechend reagieren muß oder gibt es tatsächlich fertige Methoden die mir mitteilen wann der GC Speicher freiräumt.

Oder geht man gleich so vor das z.B. Daten aus z.B. einer ArrayList beim Wechsel in eine andere Activity gesichert werden sollten? Das heißt alles was in einer Activity an Daten enthalten ist muß gesichert werden wenn die Activity entweder vom GC aus dem Speicher geräumt, gewechselt oder inaktiv ist ?

Gilt das verhalten des GC denn auch für die Hauptactivity? Angenommen man hat die App gestartet aber verwendet sie erstmal nicht. Wird dann diese Activity auch irgendwann vom GC abgeräumt?

Viele Grüße,
SebastianE

Antworten
Felix
  • Forum-Beiträge: 259

10.03.2012, 17:08:51 via Website

SebastianE
Das bedeutet das ich selbst prüfen muß wann eine Activty vom GC aus dem Speicher geräumt wird und entsprechend reagieren muß oder gibt es tatsächlich fertige Methoden die mir mitteilen wann der GC Speicher freiräumt.

Nein, du kümmerst dich einfach nur um den Activity Lifecycle. Nicht mehr, aber auch nicht weniger.


Felix.

Antworten