Variablen bei Resume wiederherstellen

M

Mo3bius

Neues Mitglied
0
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
 
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?
 
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 :)
 
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:
 
Ok, so langsam verstehe ich das Ganze. Siehe hier:

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

bzw.:

This answer is absolutely correct and deserves UP vote, not down! Let me clarify difference between states for those guys who don't see it. A GUI state, like selected radio-buttons and some text in the input field, is much less important than the data state, like records added to a list displayed in a ListView. The latter must be stored to the database in onPause because it's the only guarantied call. If you put it in onSaveInstanceState instead, you risk loosing data if that is not called. But if the radio-button selection is not saved for the same reason - it's not a big deal.
 

Ähnliche Themen

D
Antworten
17
Aufrufe
398
datNeMo
D
M
Antworten
3
Aufrufe
151
moin
M
Y
Antworten
4
Aufrufe
1.212
swa00
swa00
Zurück
Oben Unten