Speicher freigeben

T

themerx

Neues Mitglied
0
Hallo zusammen,

gibt es eine mögichkeit, dass der komplette Speicher nach beendigung des Programms wieder frei gegeben wird? Ich bin dabei ein kleines Spiel zu programmieren. Beim Kompilieren werden alle Objekte frisch/neu erzeugt. Wenn ich die App schließe und nochmal starte (vom Handy aus) scheinen alte Objekte noch genutzt zu werden.

Gibt es da eine einfache Lösung für oder muss man das manuell verwalten?

MFG T.
 
Das macht OS für dich - wenn dieSpeicher braucht, wird die schon selber dafür sorgen.
Das solltest du nicht manuell erzwingen. Einfaches Beispiel:
während dein Benutzer zockt, kommt ein Anruf (ist wichtiger wie dein Spiel - denkt die OS) -
deine Activity wird uterbrochen ( onPause() ) und wenn der Anruf zu Ende ist wieder reaktiviert
(onResume()). Wenn du die Events sauber abgearbeitet hast, kann der Benutzer weiter zocken

Ansonsten würde er das Spiel neu starten müssen - uncool
 
es gibt eine möglichkeit den garbage collector anzustoßen mit

System.gc();
 
OK Danke. Ich habe es jetzt mal ander gelöst. Ich beende das Programm manuell mit System.exit(0). Beim Neustart beginnt das Spiel von vorne.
Zum Thema Spielstände speichern: Das wollte ich dann manuell machen.

MFG T.
 
Das ist keine gute Lösung und entspricht nicht der Guidelines...
 
warum?
 
Weil es eben wie ko5tik bereits sagt eine absolut unschöne Lösung ist.
Android selbst kümmert sich nunmal um das Memory und Activity Management.
Wenn du deine Activity "sauber" beenden möchtest, brauchst du nur "finish()" aufrufen.
Wenn das System Speicher benötigt, zerstört es deine App automatisch und zwar im Normalfall "sauber" durch aufruf der onDestroy Methode.
Android kümmert sich darin sehr "gewissenhaft" das alle Ressourcen eliminiert werden.
 
funcoder schrieb:
Weil es eben wie ko5tik bereits sagt eine absolut unschöne Lösung ist.
Android selbst kümmert sich nunmal um das Memory und Activity Management.
Wenn du deine Activity "sauber" beenden möchtest, brauchst du nur "finish()" aufrufen.
Wenn das System Speicher benötigt, zerstört es deine App automatisch und zwar im Normalfall "sauber" durch aufruf der onDestroy Methode.
Android kümmert sich darin sehr "gewissenhaft" das alle Ressourcen eliminiert werden.

OK. An die Richtlinien möchte ich mich schon halten, aber es ist blöd, wenn man das Programm beendet, direkt danach wieder aufruft und es nicht mehr funktioniert, weil noch Objekte im Speicher mit falschen Daten genutzt werden.
 
Um dieses Problem zu lösen, kannst du deine objekte in der onResume() methode neu initialisieren(sofern nötig), weil onResume() auch durchlaufen wird, wenn dein activity objekt noch existiert und somit auch deine anderen objekte noch im speicher liegen.
 
Und onConfigChange nich vergessen...
 
Bau doch eine Funktion ein, die einem beim "Neustart" deiner Anwendung frägt, ob man am alten Stand weitermachen möchte oder neu beginnen möchte :)
 

Ähnliche Themen

B
Antworten
6
Aufrufe
1.050
jogimuc
J
A
Antworten
10
Aufrufe
1.903
swa00
swa00
E
Antworten
0
Aufrufe
698
enrem
E
Zurück
Oben Unten