Das Speichern und Wiederherstellen eines Aktivitäts-UI-Status ist ein wichtiger Bestandteil der Benutzererfahrung. In solchen Fällen erwartet der Client, dass der UI-Status wie zuvor fortgesetzt wird. Möglicherweise haben Sie während des Tests festgestellt, dass die Bildschirmdrehung alle vom Client gesammelten Informationen zurücksetzt. Gleiches gilt, wenn ein Benutzer versehentlich die Zurück-Taste drückt. Die Bildschirmdrehung ist eine der zahlreichen Lebenszyklusänderungen in Android, die die Aktivität zerstören und zurücksetzen und dazu führen können, dass alle Informationen verloren gehen. Definitiv keine außergewöhnliche Benutzererfahrung!
Um den UI-Status zu speichern und wiederherzustellen, überschreibe ich zu diesem Zweck zwei gebräuchlichste Methoden:
onSaveInstanceState():
Um Sättigungen der Benutzeroberfläche zu speichern, überschreibe ich onSaveInstanceState(Bundle savedInstanceState) und speichere alle Daten der Benutzeroberfläche im savedInstanceState Bundle.
Diese Methode wird in älteren Android-Versionen (bis Android 8.0) vor onStop() aufgerufen und kann in neueren Versionen nach onStop() aufgerufen werden.
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// Änderungen des UI-Status im savedInstanceState speichern.
// Dieses Bundle wird an onCreate übergeben, wenn der Prozess
// beendet und neu gestartet wird.
savedInstanceState.putBoolean(„StringKeyForBoolean“, falsch);
savedInstanceState.putDouble(„StringKeyForDouble“, 3.4);
savedInstanceState.putInt(„StringKeyForInteger“, 5);
savedInstanceState.putString(„StringKey“, „Folio3/blog“);
// usw.
}
Das Bundle ist im Wesentlichen eine Möglichkeit, eine NVP-Map („Name-Wert-Paar“) zu speichern, und es wird an onRestoreInstanceState() übergeben, wo Sie dann die Werte wie folgt extrahieren würden:
Diese Methode wird nach onStart() aufgerufen.
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// UI-Status mit savedInstanceState wiederherstellen.
Var1 = savedInstanceState.getBoolean(„StringKeyForBoolean“, falsch);
Var2 = savedInstanceState.getDouble(„StringKeyForDouble“);
Var3 = savedInstanceState.getInt(„StringKeyForInteger“);
Var4 = savedInstanceState.getString(„StringKey“);
}
Auf diese Weise können Sie alle Zustände und andere Datenvariablen speichern, die bei der Bildschirmdrehung oder beim Hintergrund der aktuellen Aktivität verloren gehen können. Das Speichern und Wiederherstellen von UI-Zuständen ist eine gute Praxis in der Android-App-Entwicklung.
Hinweis: Wenn eine Aktivität zum ersten Mal erstellt wird, befinden sich keine Daten im Bundle Instanzstatus speichern.
Lesen Sie diese Anleitung, wenn Sie planen, eine App zu starten.