1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Speicher freigeben

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von themerx, 10.04.2011.

  1. themerx, 10.04.2011 #1
    themerx

    themerx Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    09.02.2011
    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.
     
  2. ko5tik, 11.04.2011 #2
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    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
     
  3. swordi, 11.04.2011 #3
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    es gibt eine möglichkeit den garbage collector anzustoßen mit

    System.gc();
     
  4. themerx, 11.04.2011 #4
    themerx

    themerx Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    09.02.2011
    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.
     
  5. ko5tik, 11.04.2011 #5
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Das ist keine gute Lösung und entspricht nicht der Guidelines...
     
  6. themerx, 11.04.2011 #6
    themerx

    themerx Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    09.02.2011
    warum?
     
  7. funcoder, 11.04.2011 #7
    funcoder

    funcoder Erfahrener Benutzer

    Beiträge:
    218
    Erhaltene Danke:
    38
    Registriert seit:
    15.08.2009
    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.
     
  8. themerx, 11.04.2011 #8
    themerx

    themerx Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    09.02.2011
    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.
     
  9. Sabian, 12.04.2011 #9
    Sabian

    Sabian Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    2
    Registriert seit:
    21.12.2010
    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.
     
  10. ko5tik, 12.04.2011 #10
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Und onConfigChange nich vergessen...
     
  11. kleinerkathe, 12.04.2011 #11
    kleinerkathe

    kleinerkathe Android-Lexikon

    Beiträge:
    1,365
    Erhaltene Danke:
    219
    Registriert seit:
    23.01.2010
    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 :)
     

Diese Seite empfehlen