Wiele aplikacji może zapewniać sposób przechwytywania preferencji użytkownika dotyczących ustawień określonej aplikacji lub działania. W tym celu system Android udostępnia prosty zestaw interfejsów API.
Preferencje to zazwyczaj pary nazwa-wartość. Można je przechowywać jako „Preferencje współdzielone” w różnych działaniach w aplikacji (należy pamiętać, że obecnie nie można ich udostępniać między procesami). Lub może to być coś, co musi być przechowywane specyficznie dla działania.
Preferencje współdzielone: Preferencje współdzielone mogą być używane przez wszystkie składniki (działania, usługi itp.) Poza aplikacjami.
Preferencje obsługi działania: Preferencje te mogą być używane tylko w działaniu i nie mogą być używane przez inne składniki aplikacji.
Wspólne preferencje:
Wspólnymi preferencjami zarządza się za pomocą getSharedPreferences
metody Context
klasy. Preferencje są przechowywane w domyślnym pliku (1) lub możesz określić nazwę pliku (2), która będzie używana do odwoływania się do preferencji.
(1) Oto, w jaki sposób otrzymujesz instancję po określeniu nazwy pliku
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
to tryb działania dla preferencji. Jest to tryb domyślny i oznacza, że utworzony plik będzie dostępny tylko dla aplikacji wywołującej. Inne obsługiwane dwa tryby to MODE_WORLD_READABLE
i MODE_WORLD_WRITEABLE
. W MODE_WORLD_READABLE
innej aplikacji można odczytać utworzony plik, ale nie może go modyfikować. W przypadku MODE_WORLD_WRITEABLE
innych aplikacji posiadamy również uprawnienia do zapisu do utworzonego pliku.
(2) Zalecanym sposobem jest użycie trybu domyślnego, bez określania nazwy pliku
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Na koniec, gdy masz instancję preferencji, oto jak możesz odzyskać zapisane wartości z preferencji:
int storedPreference = preferences.getInt("storedInt", 0);
Aby przechowywać wartości w pliku preferencji, SharedPreference.Editor
należy użyć obiektu pliku preferencji . Editor
to zagnieżdżony interfejs SharedPreference
klasy.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Edytor obsługuje również metody takie jak remove()
i clear()
do usuwania wartości preferencji z pliku.
Preferencje dotyczące aktywności:
Wspólne preferencje mogą być używane przez inne składniki aplikacji. Ale jeśli nie musisz dzielić się preferencjami z innymi komponentami i chcesz mieć prywatne preferencje. Możesz to zrobić za pomocą getPreferences()
metody ćwiczenia. getPreference
Metoda wykorzystujegetSharedPreferences()
metodę o nazwie klasy aktywności dla nazwy pliku preferencji.
Poniżej znajduje się kod do uzyskiwania preferencji
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Kod do przechowywania wartości jest również taki sam jak w przypadku wspólnych preferencji.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Możesz także użyć innych metod, takich jak przechowywanie stanu aktywności w bazie danych. Uwaga Android zawiera również pakiet o nazwieandroid.preference
. Pakiet definiuje klasy do implementacji interfejsu użytkownika preferencji aplikacji.
Aby zobaczyć więcej przykładów, zapoznaj się z postem dotyczącym przechowywania danych Androida na stronie programistów.
PreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
preferences
obiekcieeditor.apply()
zalecane jest wywołanie,editor.commit()
ponieważ pierwsze zajmie się zapisem w tle.