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 jedemContext
in Ihrer App aus aufrufen.getPreferences()
: Bei Bedarf aus einemActivity
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);