0Pricing
Android Academy · Lektion

Einstellungen lesen und schreiben

Speichern und beobachten Sie Benutzereinstellungen.

Einstellungen lesen und schreiben ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

Lesen und Schreiben

Nachdem die Schlüssel definiert sind, bestehen die beiden grundlegenden Vorgänge darin, den Datenfluss zu lesen und mit edit zu schreiben. Lesevorgänge sind reaktiv, Schreibvorgänge sind Suspend-Funktionen.

Der Daten-Flow

dataStore.data ist ein Flow<Preferences>. Nach jedem Schreibvorgang gibt der Flow einen neuen Preferences-Snapshot aus, sodass Collector automatisch auf dem neuesten Stand bleiben.

val rawData: Flow<Preferences> = dataStore.data

Einen einzelnen Wert zuordnen

In den seltensten Fällen benötigen Sie das gesamte Preferences-Objekt. Verwenden Sie map, um einen einzelnen Schlüssel zu entnehmen und einen Standardwert anzuwenden.

val darkMode: Flow<Boolean> = dataStore.data
    .map { prefs -> prefs[PrefKeys.DARK_MODE] ?: false }

Lesefehler behandeln

Beim Lesen vom Datenträger kann ein IOException auftreten. Verwenden Sie vor map den Operator catch, um leere Preferences auszugeben und den Flow am Leben zu halten.

val darkMode: Flow<Boolean> = dataStore.data
    .catch { e ->
        if (e is IOException) emit(emptyPreferences())
        else throw e
    }
    .map { it[PrefKeys.DARK_MODE] ?: false }

Mit edit schreiben

Um Werte zu ändern, rufen Sie die suspendierbare Funktion edit auf. In der Lambda-Funktion erhalten Sie ein veränderbares Preferences-Objekt und setzen die Schlüssel darauf. Der gesamte Block ist eine Transaktion.

suspend fun setDarkMode(enabled: Boolean) {
    dataStore.edit { prefs ->
        prefs[PrefKeys.DARK_MODE] = enabled
    }
}

edit ist eine Suspend-Funktion

Da edit suspendiert, müssen Sie die Funktion aus einer Coroutine aufrufen, typischerweise in einem ViewModel mit viewModelScope.launch. Dadurch wird sichergestellt, dass der Schreibvorgang nicht im Hauptthread erfolgt.

fun toggleDarkMode(value: Boolean) {
    viewModelScope.launch {
        repository.setDarkMode(value)
    }
}

Mehrere Schlüssel aktualisieren

In einem edit-Block können Sie mehrere Schlüssel setzen. Sie werden gemeinsam atomar übernommen, sodass Beobachter niemals eine teilweise Aktualisierung sehen.

dataStore.edit { prefs ->
    prefs[PrefKeys.USERNAME] = "ada"
    prefs[PrefKeys.DARK_MODE] = true
    prefs[PrefKeys.FONT_SIZE] = 16
}

Einen Wert erhöhen

Innerhalb von edit können Sie den aktuellen Wert lesen und einen neuen berechnen. Das ist beispielsweise für Zähler wie die Anzahl der Starts nützlich.

suspend fun incrementLaunchCount() {
    dataStore.edit { prefs ->
        val current = prefs[PrefKeys.LAUNCH_COUNT] ?: 0
        prefs[PrefKeys.LAUNCH_COUNT] = current + 1
    }
}

Entfernen und leeren

Entfernen Sie einen einzelnen Schlüssel mit remove oder löschen Sie den gesamten Speicher mit clear – beides innerhalb eines edit-Blocks.

dataStore.edit { prefs ->
    prefs.remove(PrefKeys.USERNAME)
}

dataStore.edit { prefs ->
    prefs.clear()
}

In Compose sammeln

Wandeln Sie in einem Composable den Flow des ViewModels mit collectAsStateWithLifecycle() in einen State um. Die UI wird jedes Mal neu zusammengesetzt, wenn sich die Einstellung ändert.

val darkMode by viewModel.darkMode.collectAsStateWithLifecycle(initial = false)

Switch(
    checked = darkMode,
    onCheckedChange = { viewModel.toggleDarkMode(it) }
)

Ein Lese-Änderungs-Schreib-Zyklus

Zusammengefasst: Die UI liest über einen Flow, der Benutzer schaltet eine Einstellung um, das ViewModel startet eine Coroutine und ruft edit auf, DataStore schreibt, der Flow gibt den Wert erneut aus und die UI wird neu zusammengesetzt. Durchgehend reaktiv – vom Anfang bis zum Ende.

Kurze Überprüfung

Testen Sie Ihr Verständnis vom Lesen und Schreiben.

Zusammenfassung

Sie können jetzt Einstellungen lesen und schreiben:

  • dataStore.data ist ein reaktiver Flow<Preferences>
  • map entnimmt einen einzelnen Wert, catch behandelt E/A-Fehler
  • dataStore.edit { } schreibt atomar aus einer Coroutine heraus
  • collectAsStateWithLifecycle steuert die Compose-UI

Als Nächstes: typisierte strukturierte Daten mit Proto DataStore.

Häufig gestellte Fragen

Ist die Lektion „Einstellungen lesen und schreiben“ kostenlos?

Ja — der vollständige Text von „Einstellungen lesen und schreiben“ 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 „Einstellungen lesen und schreiben“?

Speichern und beobachten Sie Benutzereinstellungen. 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 3 von 4.

Wie lange dauert die Lektion „Einstellungen lesen und schreiben“?

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.

Alle Lektionen in diesem Kurs

  1. DataStore oder SharedPreferences
  2. Preferences DataStore
  3. Einstellungen lesen und schreiben
  4. Proto DataStore
← Zurück zu Android Academy