Viele Anwendungen bieten möglicherweise eine Möglichkeit, Benutzereinstellungen für die Einstellungen einer bestimmten Anwendung oder Aktivität zu erfassen. Um dies zu unterstützen, bietet Android einen einfachen Satz von APIs.
Einstellungen sind normalerweise Name-Wert-Paare. Sie können als "Freigegebene Einstellungen" für verschiedene Aktivitäten in einer Anwendung gespeichert werden (beachten Sie, dass sie derzeit nicht für mehrere Prozesse freigegeben werden können). Oder es kann etwas sein, das für eine Aktivität spezifisch gespeichert werden muss.
Freigegebene Einstellungen: Die freigegebenen Einstellungen können von allen Komponenten (Aktivitäten, Dienste usw.) außerhalb der Anwendungen verwendet werden.
Einstellungen für Aktivitäten: Diese Einstellungen können nur in der Aktivität verwendet werden und können nicht von anderen Komponenten der Anwendung verwendet werden.
Gemeinsame Einstellungen:
Die gemeinsamen Einstellungen werden mit Hilfe der getSharedPreferences
Methode der Context
Klasse verwaltet. Die Einstellungen werden in einer Standarddatei (1) gespeichert, oder Sie können einen Dateinamen (2) angeben, der zum Verweisen auf die Einstellungen verwendet werden soll.
(1) So erhalten Sie die Instanz, wenn Sie den Dateinamen angeben
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
ist die Betriebsart für die Einstellungen. Dies ist der Standardmodus und bedeutet, dass nur die aufrufende Anwendung auf die erstellte Datei zugreifen kann. Weitere zwei unterstützte Modi sind MODE_WORLD_READABLE
und MODE_WORLD_WRITEABLE
. In einer MODE_WORLD_READABLE
anderen Anwendung kann die erstellte Datei gelesen, aber nicht geändert werden. Bei MODE_WORLD_WRITEABLE
anderen Anwendungen haben Sie auch Schreibberechtigungen für die erstellte Datei.
(2) Die empfohlene Methode ist die Verwendung im Standardmodus ohne Angabe des Dateinamens
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Sobald Sie die Voreinstellungsinstanz haben, können Sie die gespeicherten Werte wie folgt aus den Voreinstellungen abrufen :
int storedPreference = preferences.getInt("storedInt", 0);
Zum Speichern von Werten in der Voreinstellungsdatei muss ein SharedPreference.Editor
Objekt verwendet werden. Editor
ist die verschachtelte Schnittstelle der SharedPreference
Klasse.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Der Editor unterstützt auch Methoden wie remove()
und clear()
zum Löschen des Voreinstellungswerts aus der Datei.
Aktivitätseinstellungen:
Die freigegebenen Einstellungen können von anderen Anwendungskomponenten verwendet werden. Wenn Sie die Einstellungen jedoch nicht mit anderen Komponenten teilen müssen und Aktivitäten private Einstellungen wünschen. Sie können dies mit Hilfe der getPreferences()
Methode der Aktivität tun . Die getPreference
Methode verwendet die getSharedPreferences()
Methode mit dem Namen der Aktivitätsklasse für den Namen der Einstellungsdatei.
Im Folgenden finden Sie den Code zum Abrufen der Einstellungen
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Der Code zum Speichern von Werten ist auch der gleiche wie bei gemeinsamen Einstellungen.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Sie können auch andere Methoden verwenden, z. B. das Speichern des Aktivitätsstatus in der Datenbank. Hinweis Android enthält auch ein Paket namens android.preference
. Das Paket definiert Klassen zum Implementieren der Benutzeroberfläche für Anwendungseinstellungen.
Weitere Beispiele finden Sie im Datenspeicherbeitrag von Android auf der Entwicklerseite.
PreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
preferences
Objekt wird ein Aufrufeditor.apply()
empfohlen,editor.commit()
da erstere das Speichern im Hintergrund übernimmt.