1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. Samsung I7500, 25.10.2009 #1
    Samsung I7500

    Samsung I7500 Threadstarter Fortgeschrittenes Mitglied

    Moinsen!

    Wenn ich irgendwas in meiner Anwendung mache, und das Handy dann kippe, ist die Anwendung danach zurückgesetzt, als wäre die Activity frisch gestartet. Zudem werden dadurch lustigerweise noch Fehler verursacht. Daher die Frage, was genau passiert beim Kippen des Handys?

    Wird die activity neu gestartet (obwohl diese mit Single Flag läuft)? Kann ich das irgendwie unterbinden und die Activity einfach nur drehen oder halt so steuern, dass meine Informationen bzw. bereits getätigten Tätigkeiten nicht einfach so zurückgesetzt werden?

    Merci... :)
     
  2. Shinigami, 25.10.2009 #2
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

  3. SirMArtin, 26.10.2009 #3
    SirMArtin

    SirMArtin freier Samsungsupporter

    onCreate wird nach dem Rotieren erneut aufgerufen. :(

    Ich speichere mit onSaveInstanceState (wird vor dem Drehen ausgeführt) den Zustand der Activity und lade diesen nach dem drehen wieder mit onRestoreInstanceState (wird nach dem Drehen aufgerufen...

    SirMArtin
     
  4. lindijones, 16.06.2010 #4
    lindijones

    lindijones Neuer Benutzer

    Hallo!

    Wie bzw. wo genau muss man diese beiden Methoden setzen damit vor dem Rotieren die Instanz gespeichert und nach dem Rotieren wieder restored wird?

    Grüßle
     
  5. the_alien, 16.06.2010 #5
    the_alien

    the_alien Android-Lexikon

  6. lindijones, 16.06.2010 #6
    lindijones

    lindijones Neuer Benutzer

    Hallo,

    den link kann man leider nur sehen, wenn man sich registriert hat.

    Die Methode "onSaveInstanceState(Bundle)" wird automatisch aufgerufen, bevor die Activity in den Hintergrund befördert wird, ja?
    Und damit bekommt "onCreate" das so gesicherte Bundle beim neuen Aufruf der Acticity wieder, oder?
    Die Frage ist nun: Wo wird das Bundle denn gesichert?
    Reden wir hier nur von einer Zwischenspeicherung im RAM solange die App offen ist und nur die eine Activity in den Hintergrund rutscht?
    Denn ich habe nun ein Boolean Flag eingeführt, welches bei einer Rotation nicht mehr alle Methoden der onCreate nochmal ausführen soll. Das funktioniert nun soweit. Allerdings geht diese Information flöten, nachdem man die Anwendung komplett schliesst. Ist das Bundle damit verloren?

    Gruß
     
  7. the_alien, 16.06.2010 #7
    the_alien

    the_alien Android-Lexikon

    Nein das Bundle geht nicht verloren, dafür ists ja da ;)

    Wegen des Links: Such mal nach "Developing Orientation-Aware Android Applications", der erste Link bei Google ist der Richtige (daher hatte ich ihn auch, verrückt dass er über Google geht aber wenn man ihn kopiert nicht...).
     
  8. lindijones, 16.06.2010 #8
    lindijones

    lindijones Neuer Benutzer

    Das ist seltsam, denn innerhalb der offenen Activity wird der Boolean Wert beibehalten. Wenn ich die Activity aber mit den "Zurück"-Knopf schliesse, ist nach dem Neustart dieser Boolean Wert wieder auf False.
    Vermutlich weil die gesamte Klasseninstanz wieder neu gesetzt wird. Und da wird auch der Boolean wieder auf "false" gesetzt, oder?
    Hmm..

    Grüßle
     
  9. FelixL, 16.06.2010 #9
    FelixL

    FelixL Ehrenmitglied

  10. Fr4gg0r, 16.06.2010 #10
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Solange du die onKeyDown(...) nicht überschreibst, ruft der Back Key standardmäßig finish() bzw. die onDestroy() Methode auf.
    Der Home Button ruft lediglich onStop() auf.