1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. themerx, 10.04.2011 #1
    themerx

    themerx Threadstarter Neuer Benutzer

    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

    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

    es gibt eine möglichkeit den garbage collector anzustoßen mit

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

    themerx Threadstarter Neuer Benutzer

    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

    Das ist keine gute Lösung und entspricht nicht der Guidelines...
     
  6. themerx, 11.04.2011 #6
    themerx

    themerx Threadstarter Neuer Benutzer

    warum?
     
  7. funcoder, 11.04.2011 #7
    funcoder

    funcoder Erfahrener Benutzer

    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

    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

    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

    Und onConfigChange nich vergessen...
     
  11. kleinerkathe, 12.04.2011 #11
    kleinerkathe

    kleinerkathe Android-Lexikon

    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

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android speicher freigeben

    ,
  2. htc one speicher freigeben