rememberSaveable
Bewahren Sie den Zustand über Konfigurationsänderungen hinweg.
rememberSaveable ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Das Problem mit remember
remember übersteht eine Rekomposition, aber keine Konfigurationsänderungen wie eine Bildschirmdrehung. Wenn die Activity neu erstellt wird, geht der gespeicherte Zustand verloren und wird auf seinen Anfangswert zurückgesetzt.
rememberSaveable kommt ins Spiel
rememberSaveable funktioniert wie remember, speichert den Wert aber zusätzlich über Konfigurationsänderungen und den Tod des Prozesses hinweg und stellt ihn anschließend wieder her.
var count by rememberSaveable { mutableStateOf(0) }Beispiel für eine Drehung
Mit einfachem remember wird ein Zähler beim Drehen des Telefons auf 0 zurückgesetzt. Mit rememberSaveable bleibt der Zählerstand über die Drehung hinweg erhalten.
So wird gespeichert
Im Hintergrund speichert rememberSaveable den Wert im saved instance state-Bundle der Activity — mit demselben Mechanismus, den das alte View-System für onSaveInstanceState verwendet hat.
Unterstützte Typen
Automatisch gespeichert werden Typen, die in ein Bundle passen: primitive Typen, String und Parcelable-Objekte. Für benutzerdefinierte Typen ist etwas zusätzliche Arbeit erforderlich.
Prozesstod
Wenn Android Ihre App im Hintergrund beendet, um Speicher freizugeben, und die Benutzerin oder der Benutzer anschließend zurückkehrt, stellt rememberSaveable den gespeicherten Zustand wieder her. Dadurch sieht der Bildschirm so aus, wie er verlassen wurde.
Benutzerdefinierte Saver
Wenn ein Typ nicht automatisch speicherbar ist, stellen Sie einen Saver bereit, der ihn in eine speicherbare Form umwandelt und daraus wiederherstellt. Compose bietet Hilfsfunktionen wie listSaver und mapSaver.
val saver = listSaver<MyState, Any>(
save = { listOf(it.a, it.b) },
restore = { MyState(it[0] as Int, it[1] as String) }
)Einen benutzerdefinierten Saver verwenden
Übergeben Sie den Saver über dessen Parameter saver an rememberSaveable, damit Compose weiß, wie Ihr Typ dauerhaft gespeichert werden kann.
var state by rememberSaveable(stateSaver = saver) {
mutableStateOf(MyState(0, ""))
}Welche Variante wann verwenden?
Verwenden Sie rememberSaveable für Zustände, deren Verlust bei einer Drehung die Benutzerin oder den Benutzer ärgern würde — etwa Formulareingaben, die Scrollposition oder den ausgewählten Tab. Verwenden Sie einfaches remember für vorübergehenden UI-Zustand, der problemlos zurückgesetzt werden kann.
Nicht für große Datenmengen
Das gespeicherte Bundle ist klein. Speichern Sie keine großen Daten (Bitmaps, lange Listen) in rememberSaveable. Bewahren Sie umfangreiche Daten in einem ViewModel oder Repository auf und speichern Sie nur kleine Bezeichner.
Zusammenfügen
Ein Formularfeld, das dank rememberSaveable eine Drehung übersteht.
@Composable
fun LoginField() {
var email by rememberSaveable { mutableStateOf("") }
TextField(
value = email,
onValueChange = { email = it }
)
}Schnelltest
Was macht rememberSaveable, was remember nicht macht?
Zusammenfassung
rememberSaveable:
- Übersteht Drehungen und die Beendigung des Prozesses, nicht nur eine Rekombination.
- Speichert primitive Datentypen,
StringundParcelableautomatisch. - Verwenden Sie für eigene Typen einen Saver.
- Halten Sie gespeicherte Daten klein; große Daten gehören in ein ViewModel.
Häufig gestellte Fragen
Ist die Lektion „rememberSaveable“ kostenlos?
Ja — der vollständige Text von „rememberSaveable“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „rememberSaveable“?
Bewahren Sie den Zustand über Konfigurationsänderungen hinweg. Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Android Academy zu starten?
Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „rememberSaveable“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?
Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.