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

Variablen bei Resume wiederherstellen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Mo3bius, 14.02.2012.

  1. Mo3bius, 14.02.2012 #1
    Mo3bius

    Mo3bius Threadstarter Neuer Benutzer

    Beiträge:
    15
    Erhaltene Danke:
    0
    Registriert seit:
    14.11.2011
    Hi,
    ich möchte einige Variablen mit onSaveInstanceState() speichern. Es funktioniert schon, wenn ich das Handy drehe. Beende ich die App oder öffne eine andere, so funktioniert es leider nicht. Ich vermute, dass die oncreate()-Methode nicht aufgerufen wird, da meine App im Status onPause() oder onStop() ist. Dadurch wird auch onSaveInstanceState() nicht ausgeführt.

    Wie kann ich das Problem lösen? Soll ich versuchen meine App immer ganz zu beenden? Oder soll ich meine Daten richtig speichern (sharedpreferences etc.) und sie jedesmal in onResume() laden?

    Mfg Mo3bius
     
  2. sixi, 15.02.2012 #2
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    von was für "Variablen" redest du denn? :) Brauchst du Sie immer, manchmal, müssen sie persistent gespeichert werden, ...

    Wenn es sich eh nicht um Daten handelt, die sinnvoll dauerhaft gespeichert werden, dann eher nicht in die Preferences. Hast du dir jenes mal durchgelesen?
     
  3. Tom299, 15.02.2012 #3
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Lies dir das mal durch Activity | Android Developers

    Da steht klar drin, daß onSaveInstanceState() nur aufgerufen wird, wenns wirklich notwendig ist, z.B. wenn du von A nach B gehst und das System A wegen Speichermangel beenden muß. Ansonsten wird A nicht gekillt und die Methode auch nicht aufgerufen. Es hat nicht direkt was mit dem Lifecycle zu tun wie onPause(), was ja z.B. immer aufgerufen wird.

    War mir aber vorher auch nicht klar, wieder was gelernt :)
     
  4. Mo3bius, 15.02.2012 #4
    Mo3bius

    Mo3bius Threadstarter Neuer Benutzer

    Beiträge:
    15
    Erhaltene Danke:
    0
    Registriert seit:
    14.11.2011
    Ich benötige im Moment 6 Strings und 1 int. Diese müssen immer in onresume() bekannt sein.

    Ich habe es jetzt so gelöst, dass ich diese Variablen in onPause() als sharedPreferences speichere. In onResume() lese ich sie dann wieder ein. Dies funktioniert auch wirklich jedesmal. Der Nchteil ist halt, dass die App jedesmal die sharedPreferences lesen und schreiben muss.

    Wofür implementiert man eigentlich dann die onSaveInstanceState()-Methode? Ich habe mir dazu mal das Snake-Beispiel angesehen und verstehe noch nicht so ganz warum es da funktioniert.:confused:
     
  5. Mo3bius, 15.02.2012 #5
    Mo3bius

    Mo3bius Threadstarter Neuer Benutzer

    Beiträge:
    15
    Erhaltene Danke:
    0
    Registriert seit:
    14.11.2011
    Ok, so langsam verstehe ich das Ganze. Siehe hier:

    How do I save an Android application's state? - Stack Overflow

    bzw.:

     

Diese Seite empfehlen