onRestoreInstanceState()
genannt wird , nur dann , wenn neu erstellt Aktivität , nachdem sie wurde getötet durch das Betriebssystem. Eine solche Situation tritt auf, wenn:
- Die Ausrichtung des Geräts ändert sich (Ihre Aktivität wird zerstört und neu erstellt).
- Vor Ihnen liegt eine weitere Aktivität, und irgendwann beendet das Betriebssystem Ihre Aktivität, um beispielsweise Speicherplatz freizugeben. Wenn Sie das nächste Mal Ihre Aktivität starten, wird onRestoreInstanceState () aufgerufen.
Im Gegensatz dazu: Wenn Sie sich in Ihrer Aktivität befinden und die Back
Taste auf dem Gerät drücken, wird Ihre Aktivität beendet () (dh als beenden Sie die Desktop-Anwendung) und beim nächsten Start Ihrer App wird sie "frisch" gestartet, dh ohne gespeicherter Zustand, weil Sie ihn absichtlich verlassen haben, als Sie getroffen haben Back
.
Eine andere Quelle der Verwirrung ist, dass wenn eine App den Fokus auf eine andere App verliert, diese onSaveInstanceState()
aufgerufen wird, wenn Sie jedoch zurück zu Ihrer App navigieren, diese onRestoreInstanceState()
möglicherweise nicht aufgerufen wird. Dies ist der in der ursprünglichen Frage beschriebene Fall, dh wenn Ihre Aktivität während des Zeitraums, in dem andere Aktivitäten im onRestoreInstanceState()
Vordergrund standen, NICHT getötet wurde, wird sie NICHT aufgerufen, da Ihre Aktivität so ziemlich "lebendig" ist.
Alles in allem, wie in der Dokumentation angegeben für onRestoreInstanceState()
:
Die meisten Implementierungen verwenden einfach onCreate (Bundle), um ihren Status wiederherzustellen. Manchmal ist es jedoch zweckmäßig, dies nach Abschluss der Initialisierung hier zu tun oder Unterklassen die Möglichkeit zu geben, zu entscheiden, ob Ihre Standardimplementierung verwendet werden soll. Die Standardimplementierung dieser Methode führt eine Wiederherstellung aller Ansichtsstatus durch, die zuvor von onSaveInstanceState (Bundle) eingefroren wurden.
Wie ich es gelesen habe: Es gibt keinen Grund zum Überschreiben, es onRestoreInstanceState()
sei denn, Sie sind eine Unterklasse Activity
und es wird erwartet, dass jemand Ihre Unterklasse unterordnet.