1. Javus, 24.10.2011 #1
    Javus

    Javus Threadstarter Neuer Benutzer

    Bei Verlassen meiner App soll der Programmzustand gesichert werden. Wird die App wieder aufgerufen, soll der gesicherte Zustand wiederhergestellt werden.

    Leider habe ich noch keine sicheren Einstiegsunkte hierfür gefunden: Ich teste mit dem Eclipse-Debugger mit meinem über USB angeschlossenem HTC Wildfire S.

    1.) Die Funktion "void onRestoreInstanceState(Bundle savedInstanceState)", die ich in meiner Activity implementiert habe, wird nie aufgerufen.

    2.) Die Funktion "void onSaveInstanceState(Bundle outState)", die ich in meiner Activity implementiert habe, wird aufgerufen, wenn ich das Programm mit der Home-Taste des Handys verlasse. Bei Betätigung der Zurück-Taste erfolgt kein Aufruf.

    3.) Die Funktion "void onCreate(Bundle savedInstanceState)", die ich in meiner Activity implementiert habe, wird bei Start meiner App aufgerufen. Wenn ich die App allerdings mit der Home-Taste verlassen habe, erfolgt kein Aufruf.

    Hat jemand Erfahrung, wie man den Programmzustand zuverlässig sichern und wiederherstellen kann?

    Oder ist man gezwungen, für jede Programmvariable eine XML-Resource anzulegen?
    -------------------------------------------------------------------------------

    Ich habe selbst nachgelesen. Ich versuch's erstmal mit onPause usw...
     
    Zuletzt bearbeitet: 24.10.2011
  2. ko5tik, 24.10.2011 #2
    ko5tik

    ko5tik Android-Experte

    1. Speichern im onPause() -> nur dieses Callback wird garantiert aufgerufen.
    2. Laden im onResume() , aber zuerst überprüfen ob es notwendig ist. Zum Beispiel, im onCreate() einen Flag zurücksetzen ( HIntergrund: es kann sein dasdeine Activity wieder im Vordergund geholt wurde, und es kein Grund besteht den Zustand erneut zu laden )


    Resourcen speicherst du am Besten in SharedPreferences ( ich arbeite gerade ein einer Binding-Schicht die es vereinfachen soll: https://github.com/ko5tik/andject )
     
    Javus bedankt sich.
  3. Javus, 24.10.2011 #3
    Javus

    Javus Threadstarter Neuer Benutzer

    Ich habe festgetellt und auch nachgelesen, dass nach onCreate immer onResume aufgerufen wird. Ich werde das Laden des Zustandes aus onCreate raus- und in onResume reinnehmen.

    Wozu onSave/RestoreInstanceState gut sein sollen ist mir ein Rätsel - aber egal.
     
  4. ko5tik, 24.10.2011 #4
    ko5tik

    ko5tik Android-Experte

    Falsch. Date Laden solltest du in onResume() , aber nur dann, wenn es wirklich notwendig ist.
    ( sprich: in onCreate() eine:
    private boolean bitteDiDatenLaden;

    auf true setzen und im onResume überproüfen
     

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. programmzustand speichern