Einfache Daten mit SharedPreferences speichern

Wenn Sie eine relativ kleine Sammlung von Schlüssel/Wert-Paaren haben, die Sie 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 dieser Paare. Jede SharedPreferences-Datei wird vom Framework verwaltet und kann privat oder freigegeben sein.

Auf dieser Seite wird beschrieben, wie Sie mit den SharedPreferences APIs einfache Werte speichern und abrufen.

Gemeinsame Einstellungen verwalten

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 gemeinsame, namentlich identifizierte Präferenzdateien benötigen, die Sie im ersten Parameter angeben. Sie können diesen Code von jeder Context in Ihrer App aus aufrufen.
  • getPreferences(): Verwenden Sie diese Option in einer Activity, wenn Sie nur eine gemeinsame Einstellungsdatei für die Aktivität verwenden möchten. Da hier eine Standarddatei mit freigegebenen Einstellungen abgerufen wird, die zur Aktivität gehört, müssen Sie keinen Namen angeben.

Im folgenden Code wird beispielsweise auf die freigegebene Einstellungsdatei zugegriffen, die durch den Ressourcenstring R.string.preference_file_key identifiziert wird. Sie wird 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);

Geben Sie für Ihre freigegebenen Einstellungsdateien einen eindeutigen Namen an, der für Ihre App verwendet werden kann. Sie können dazu beispielsweise die Anwendungs-ID als Präfix für den Dateinamen verwenden. 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 Standarddatei mit den freigegebenen Einstellungen für die gesamte App abzurufen. Weitere Informationen finden Sie im Entwicklerleitfaden zu Einstellungen.

In gemeinsame Einstellungen schreiben

Wenn Sie in eine freigegebene Einstellungsdatei schreiben möchten, erstellen Sie eine SharedPreferences.Editor, indem Sie edit() auf Ihrer SharedPreferences aufrufen.

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

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 aber asynchron auf das Laufwerk. Alternativ können Sie commit() verwenden, um die Daten synchron auf die Festplatte zu schreiben. Da commit() jedoch synchron ist, sollten Sie sie nicht über den Hauptthread aufrufen, da das Rendering der Benutzeroberfläche pausiert werden könnte.

Aus freigegebenen Einstellungen lesen

Wenn Sie Werte aus einer freigegebenen Einstellungsdatei abrufen möchten, rufen Sie Methoden wie getInt() und getString() auf und geben Sie den Schlüssel für den gewünschten Wert und optional einen Standardwert an, der zurückgegeben werden soll, 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);