Einfache Daten mit SharedPreferences speichern

Wenn Sie eine relativ kleine Sammlung von Schlüssel/Wert-Paaren haben, können Sie die SharedPreferences APIs verwenden. Ein SharedPreferences-Objekt verweist auf eine Datei mit Schlüssel/Wert-Paaren und bietet einfache Lesemethoden und schreibe sie auf. Jede SharedPreferences-Datei wird vom Framework verwaltet privat oder freigegeben sein.

Auf dieser Seite erfahren Sie, wie Sie die SharedPreferences APIs zum Speichern und Speichern um einfache Werte abzurufen.

Gemeinsame Einstellungen verwalten

Sie können eine neue freigegebene Einstellungsdatei erstellen oder auf eine vorhandene zugreifen, indem Sie folgenden Befehl aufrufen: eine der folgenden Methoden:

  • getSharedPreferences(): Verwenden Sie diese Option, wenn mehrere freigegebene Elemente anhand des Namens identifizierte bevorzugte Dateien, die Sie mit dem ersten . Sie können sie von jedem Context in Ihrer App aus aufrufen.
  • getPreferences(): Bei Bedarf aus einem Activity verwenden , um nur eine gemeinsame Einstellungsdatei für die Aktivität zu verwenden. Da diese eine Standarddatei mit freigegebenen Einstellungen abruft, die zur Aktivität gehört, können Sie brauchen Sie keinen Namen.

Der folgende Code greift beispielsweise auf die Datei mit den freigegebenen Einstellungen zu, die durch den Ressourcenstring R.string.preference_file_key identifiziert und öffnet sie Verwenden Sie den privaten Modus, damit nur Ihre Anwendung 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);

Wenn Sie Ihre freigegebenen Einstellungsdateien benennen, sollten Sie einen eindeutigen Namen verwenden. für Ihre App identifizierbar ist. Eine gute Möglichkeit dazu ist, dem Dateinamen das Präfix Ihre Anwendungs-ID Hier einige Beispiele: "com.example.myapp.PREFERENCE_FILE_KEY"

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

Kotlin

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

Java

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

Wenn du zum Speichern von App-Einstellungen die SharedPreferences API verwendest, gibt es sollten Sie stattdessen getDefaultSharedPreferences() verwenden, um die Standardeinstellung gemeinsame Einstellungsdatei für Ihre gesamte App. Weitere Informationen finden Sie in der Entwicklerleitfaden zu Einstellungen

In gemeinsame Einstellungen schreiben

Wenn Sie Daten in eine freigegebene Datei mit Einstellungen schreiben möchten, müssen Sie eine SharedPreferences.Editor erstellen indem du edit() auf deinem SharedPreferences anrufst.

Übergeben Sie die Schlüssel und Werte, die Sie schreiben möchten, mit Methoden wie den folgenden: putInt() und putString() Rufen Sie dann apply() auf oder commit(), 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 sofort das speicherinterne SharedPreferences-Objekt, aber schreibt die Aktualisierungen asynchron auf die Festplatte. Alternativ können Sie commit() verwenden. um die Daten synchron auf die Festplatte zu schreiben. Da commit() jedoch synchron ist, Sie sollten es nicht aus Ihrem Hauptthread aufrufen, da dies Ihre UI pausieren könnte zu verbessern.

Aus geteilten Einstellungen lesen

Um Werte aus einer gemeinsamen Einstellungsdatei abzurufen, rufen Sie Methoden wie getInt() und getString() mit dem Schlüssel für den Wert, den Sie und optional einen Standardwert, der zurückgegeben wird, wenn der Schlüssel nicht vorhanden ist. Für 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);