Einfache Daten mit SharedPreferences speichern

Wenn Sie eine relativ kleine Sammlung von Schlüssel/Wert-Paaren speichern möchten, können Sie die SharedPreferences APIs verwenden. Ein SharedPreferences-Objekt verweist auf eine Datei mit Schlüssel/Wert-Paaren und bietet einfache Methoden zum Lesen und Schreiben. Jede SharedPreferences-Datei wird vom Framework verwaltet und kann privat oder freigegeben sein.

Auf dieser Seite erfahren Sie, wie Sie mit den SharedPreferences APIs einfache Werte speichern und abrufen können.

Alias für geteilte Präferenzen erstellen

Sie können eine neue Datei mit freigegebenen Einstellungen erstellen oder auf eine vorhandene Datei zugreifen, indem Sie eine der folgenden Methoden aufrufen:

  • getSharedPreferences(): Verwenden Sie diese Option, wenn Sie mehrere freigegebene Präferenzdateien benötigen, die namentlich identifiziert werden und Sie mit dem ersten Parameter angeben. Sie können diese Aktion von jedem Context in Ihrer App aus aufrufen.
  • getPreferences(): Verwenden Sie diese Datei aus einem Activity, wenn Sie nur eine gemeinsame Einstellungsdatei für die Aktivität verwenden müssen. Da dadurch eine standardmäßige Datei mit freigegebenen Präferenzen abgerufen wird, die zur Aktivität gehört, müssen Sie keinen Namen angeben.

Mit dem folgenden Code wird beispielsweise auf die Datei mit gemeinsamen Einstellungen zugegriffen, die durch den Ressourcenstring R.string.preference_file_key identifiziert wird, und sie im privaten Modus geöffnet, sodass nur Ihre App auf die Datei zugreifen kann:

Kotlin

val sharedPref = activity?.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE)

Java

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

Beim Benennen Ihrer freigegebenen Einstellungsdateien sollten Sie einen Namen verwenden, der für Ihre Anwendung eindeutig identifizierbar ist. Dazu können Sie dem Dateinamen Ihre Anwendungs-ID voranstellen. Beispiel: "com.example.myapp.PREFERENCE_FILE_KEY"

Wenn Sie nur eine gemeinsame Einstellungsdatei für Ihre Aktivität benötigen, können Sie alternativ die Methode getPreferences() verwenden:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)

Java

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

Wenn Sie die SharedPreferences API zum Speichern von App-Einstellungen verwenden, sollten Sie stattdessen getDefaultSharedPreferences() verwenden, um die standardmäßige Datei mit den freigegebenen Präferenzen für Ihre gesamte App abzurufen. Weitere Informationen finden Sie im Entwicklerleitfaden für Einstellungen.

In gemeinsame Einstellungen schreiben

Wenn du in eine Datei mit freigegebenen Einstellungen schreiben möchtest, musst du ein SharedPreferences.Editor erstellen, indem du edit() auf deinem SharedPreferences aufrufst.

Übergeben Sie die Schlüssel und Werte, die Sie mit Methoden wie putInt() und putString() schreiben möchten. Rufen Sie dann apply() oder commit() auf, um die Änderungen zu speichern. Beispiele:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    putInt(getString(R.string.saved_high_score_key), newHighScore)
    apply()
}

Java

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score_key), newHighScore);
editor.apply();

apply() ändert das speicherinterne SharedPreferences-Objekt sofort, schreibt die Aktualisierungen jedoch asynchron auf die Festplatte. Alternativ können Sie commit() verwenden, um die Daten synchron auf das Laufwerk zu schreiben. Da commit() jedoch synchron ist, sollten Sie es nicht über Ihren Hauptthread aufrufen, da dadurch das UI-Rendering pausiert werden könnte.

Aus geteilten Einstellungen lesen

Rufen Sie zum Abrufen von Werten aus einer Datei mit gemeinsamen Einstellungen Methoden wie getInt() und getString() auf und geben Sie den Schlüssel für den gewünschten Wert sowie optional einen Standardwert an, der zurückgegeben wird, wenn der Schlüssel nicht vorhanden ist. Beispiel:

Kotlin


val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key)
val highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue)

Java


SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key);
int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);