Многие приложения могут предоставлять способ фиксировать предпочтения пользователя относительно настроек конкретного приложения или действия. Для поддержки этого Android предоставляет простой набор API.
Предпочтения обычно представляют собой пары имя-значение. Они могут быть сохранены как «Общие настройки» для различных действий в приложении (обратите внимание, что в настоящее время они не могут использоваться другими процессами). Или это может быть что-то, что нужно сохранить для конкретного действия.
Общие настройки: общие настройки могут использоваться всеми компонентами (действиями, службами и т. Д.) Вне приложений.
Предпочтения обрабатываемых действий: эти предпочтения могут использоваться только в действии и не могут использоваться другими компонентами приложения.
Общие настройки:
Общие настройки управляются с помощью getSharedPreferences
метода Context
класса. Настройки сохраняются в файле по умолчанию (1), или вы можете указать имя файла (2), которое будет использоваться для ссылки на настройки.
(1) Вот как вы получаете экземпляр, когда указываете имя файла
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
это рабочий режим для предпочтений. Это режим по умолчанию, который означает, что к созданному файлу будет обращаться только вызывающее приложение. Поддерживаются два других режима: MODE_WORLD_READABLE
и MODE_WORLD_WRITEABLE
. В MODE_WORLD_READABLE
другом приложении можно читать созданный файл, но нельзя его изменять. В случае MODE_WORLD_WRITEABLE
других приложений также есть права на запись в созданный файл.
(2) Рекомендуемый способ - использовать режим по умолчанию, без указания имени файла.
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Наконец, когда у вас есть экземпляр настроек, вот как вы можете получить сохраненные значения из настроек:
int storedPreference = preferences.getInt("storedInt", 0);
Для хранения значений в файле настроек SharedPreference.Editor
должен использоваться объект. Editor
- это вложенный интерфейс SharedPreference
класса.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Редактор также поддерживает такие методы, как remove()
и clear()
для удаления значения предпочтения из файла.
Настройки активности:
Общие настройки могут использоваться другими компонентами приложения. Но если вам не нужно делиться настройками с другими компонентами и вы хотите иметь частные настройки действий. Сделать это можно с помощью getPreferences()
метода задания. getPreference
Метод использует getSharedPreferences()
метод с именем класса активности для имени файла предпочтений.
Ниже приведен код для получения настроек.
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Код для хранения значений такой же, как и в случае общих настроек.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Вы также можете использовать другие методы, такие как сохранение состояния активности в базе данных. Примечание. Android также содержит пакет под названием android.preference
. Пакет определяет классы для реализации пользовательского интерфейса предпочтений приложения.
Чтобы увидеть еще несколько примеров, ознакомьтесь с публикацией Android Data Storage на сайте разработчиков.
PreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
preferences
объектеeditor.apply()
рекомендуется вызвать вызов ,editor.commit()
поскольку первый будет обрабатывать сохранение в фоновом режиме.