0Pricing
Android Academy · Lektion

SharedPreferences

Speichern Sie einfache Schlüssel-Wert-Daten über App-Sitzungen hinweg mit SharedPreferences. Lernen Sie, Einstellungen zu speichern, zu lesen und zu entfernen.

SharedPreferences ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 6. 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 6 Lektionen.

Optionen für die dauerhafte Speicherung

Android bietet mehrere Möglichkeiten, Daten lokal zu speichern:

  • SharedPreferences – einfache Schlüssel-Wert-Paare (Einstellungen, Tokens)
  • Room – strukturierte SQLite-Datenbank (komplexe Daten)
  • DataStore – moderne asynchrone Alternative zu SharedPreferences
  • Files – direkte Dateiein- und -ausgabe

SharedPreferences eignet sich ideal für einfache Einstellungen und Benutzervoreinstellungen.

Was ist SharedPreferences?

SharedPreferences speichert Daten als Schlüssel-Wert-Paare in einer XML-Datei auf dem Gerät. Unterstützt werden:

  • String
  • Int / Long / Float
  • Boolean
  • Set<String>

Die Daten bleiben über Neustarts der App hinweg erhalten und überstehen Konfigurationsänderungen (Drehung).

Eine SharedPreferences-Instanz abrufen

Es gibt zwei Möglichkeiten, ein SharedPreferences-Objekt abzurufen:

// 1. Named preferences (shared across activities)
val prefs = getSharedPreferences(
    "MyAppPrefs",    // file name
    Context.MODE_PRIVATE  // only your app can read it
)

// 2. Activity's default preferences
val prefs = getPreferences(Context.MODE_PRIVATE)

Daten schreiben

Verwenden Sie einen Editor, um Werte zu schreiben, und rufen Sie anschließend apply() auf:

val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)

prefs.edit()
    .putString("username", "alice")
    .putInt("login_count", 5)
    .putBoolean("dark_mode", true)
    .apply()  // async, non-blocking — preferred over commit()

// Kotlin extension (cleaner syntax):
with(prefs.edit()) {
    putString("username", "alice")
    apply()
}

Daten lesen

Lesen Sie Werte über den Schlüssel aus und geben Sie einen Standardwert an, falls der Schlüssel nicht existiert:

val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)

val username = prefs.getString("username", "Guest")  // default: "Guest"
val count = prefs.getInt("login_count", 0)            // default: 0
val darkMode = prefs.getBoolean("dark_mode", false)   // default: false

println("Hello, $username! Logins: $count. Dark: $darkMode")

Praxisbeispiel: Design umschalten

Speichern und laden Sie eine Einstellung für den dunklen Modus:

class SettingsActivity : AppCompatActivity() {

    private lateinit var binding: ActivitySettingsBinding
    private lateinit var prefs: SharedPreferences

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivitySettingsBinding.inflate(layoutInflater)
        setContentView(binding.root)

        prefs = getSharedPreferences("settings", MODE_PRIVATE)

        // Restore saved state
        binding.switchDarkMode.isChecked = prefs.getBoolean("dark_mode", false)

        binding.switchDarkMode.setOnCheckedChangeListener { _, isChecked ->
            prefs.edit().putBoolean("dark_mode", isChecked).apply()
        }
    }
}

Ein Login-Token speichern

Speichern und prüfen Sie ein Authentifizierungs-Token über Neustarts der App hinweg:

// Save token after login
fun saveToken(token: String) {
    getSharedPreferences("auth", MODE_PRIVATE)
        .edit()
        .putString("token", token)
        .apply()
}

// Check if user is logged in
fun isLoggedIn(): Boolean {
    val token = getSharedPreferences("auth", MODE_PRIVATE)
        .getString("token", null)
    return token != null
}

// Clear on logout
fun logout() {
    getSharedPreferences("auth", MODE_PRIVATE)
        .edit()
        .remove("token")
        .apply()
}

Daten entfernen und löschen

Entfernen Sie bestimmte Schlüssel oder löschen Sie alle Daten:

  • .remove("key") – einen Eintrag löschen
  • .clear() – alle Daten in der Datei löschen

Rufen Sie immer .apply() auf (oder .commit(), wenn Sie eine synchrone Bestätigung benötigen).

SharedPreferences im Vergleich zu DataStore

SharedPreferences funktioniert gut, hat aber einige Einschränkungen:

  • Synchrone Lesevorgänge können den Hauptthread blockieren
  • Keine Typsicherheit

Jetpack DataStore ist die moderne Alternative – vollständig asynchron mit Kotlin Flow und Typsicherheit. Für neue Projekte sollten Sie DataStore bevorzugen. SharedPreferences wird weiterhin häufig verwendet und ist für kleine Datenmengen vollkommen geeignet.

Kurze Überprüfung

Welche Methode speichert Daten asynchron in SharedPreferences, ohne den UI-Thread zu blockieren?

Zusammenfassung: SharedPreferences

Sie können nun einfache Daten über mehrere App-Starts hinweg speichern:

  • Abrufen mit getSharedPreferences(name, MODE_PRIVATE)
  • Schreiben: .edit().putString(key, value).apply()
  • Lesen: .getString(key, defaultValue)
  • Entfernen: .edit().remove(key).apply()
  • apply() (asynchron) gegenüber commit() (synchron) verwenden

Nächster Kurs: App-Architektur – ViewModel, Room und Coroutines.

Häufig gestellte Fragen

Ist die Lektion „SharedPreferences“ kostenlos?

Ja — der vollständige Text von „SharedPreferences“ 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 6 Lektionen.

Was lerne ich in „SharedPreferences“?

Speichern Sie einfache Schlüssel-Wert-Daten über App-Sitzungen hinweg mit SharedPreferences. Lernen Sie, Einstellungen zu speichern, zu lesen und zu entfernen. 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 6.

Wie lange dauert die Lektion „SharedPreferences“?

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. Kotlin-Collections
  2. Grundlagen von RecyclerView
  3. Click-Ereignisse in RecyclerView
  4. SharedPreferences
  5. DataStore Preferences
  6. Adapter und DiffUtil
← Zurück zu Android Academy