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

Sicherung des Programmzustandes

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Javus, 24.10.2011.

  1. Javus, 24.10.2011 #1
    Javus

    Javus Threadstarter Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    17.10.2011
    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

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    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

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    17.10.2011
    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

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    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
     

Diese Seite empfehlen