SharedPreferences — постоянное хранилище на платформе Android, используемое приложениями для хранения своих настроек, например. Это хранилище является относительно постоянным, пользователь может зайти в настройки приложения и очистить данные приложения, тем самым очистив все данные в хранилище.

Для работы с данными постоянного хранилища нам понадобится экземпляр класса SharedPreferences, который можно получить у любого объекта, унаследованного от класса android.content.Context (например, Activity или Service). У объектов этих классов (унаследованных от Context) есть метод getSharedPreferences, который принимает 2 параметра:

  • name — выбранный файл настроек. Если файл настроек с таким именем не существует, он будет создан при вызове метода edit() и фиксировании изменений с помощью метода commit().
  • mode — режим работы. Возможные значения:
    • MODE_PRIVATE — используется в большинстве случаев для приватного доступа к данным приложением-владельцем
    • MODE_WORLD_READABLE — только для чтения
    • MODE_WORLD_WRITEABLE  — только записи
    • MODE_MULTI_PROCESS — несколько процессов совместно используют один файл SharedPreferences.

ВНИМАНИЕ! Все модификаторы кроме MODE_PRIVATE в настоящий момент объявлены deprecated и не рекомендуются к использованию в целях безопасности. Если необходимо реализовать использование общих данных несколькими приложениями, это можно сделать через сервисы или контент-провайдеры. Подробнее можно почитать, например, здесь.

Чтобы получить значение необходимой переменной, используйте следующие методы объекта SharedPreferences:

  • getBoolean(String key, boolean defValue),
  • getFloat(String key, float defValue),
  • getInt(String key, int defValue),
  • getLong(String key, long defValue),
  • getString(String key, String defValue),
  • getStringSet(String key, Set defValues).

Второй параметр — значение, которое вернется в случае если значение по ключу key отсутствует в SharedPreferences. Также, методом getAll() можно получить все доступные значения.

Чтобы записать значение переменной необходимо:

  1. получить объект SharedPreferences.Editor выполнив метод edit() объекта класса SharedPreferences
  2. записать значение с помощью методов:
    • putBoolean(String key, boolean value),
    • putFloat(String key, float value),
    • putInt(String key, int value),
    • putLong(String key, long value),
    • putString(String key, String value),
    • putStringSet(String key, Set values)
  3. выполнить метод commit()

Также есть возможность удалить конкретное значение (remove(String key)) или все значения (clear())

Приведенный ниже код демонстрирует запись переменной типа String в хранилище:

— context — объект, унаследованный от android.content.Context.

Представим простой класс для работы с постоянным хранилищем — PersistantStorage.

Перед записью значений в хранилище или получением значений из хранилища, класс нужно проинициализировать, вызвав метод init() и передав ему объект, унаследованный от android.content.Context (например, Activity или Service).

В этом классе реализована работа только со строковыми данными. Вы легко можете самостоятельно его расширить, используя стандартные методы PersistantStorage или написав собственные сериализаторы для сложных объектов.

ВНИМАНИЕ! Метод commit() устарел и объявлен deprecated. Вместо него следует использовать метод apply() — он появился в API 9 и работает в асинхронном режиме, что является более предпочтительным вариантом.

SharedPreferences. Сохранение данных в постоянное хранилище Android обновлено: Август 18, 2015 автором: admin

  1. будет . только apply работает только в версиях выше 9
    изначально commit. возвращает true и false

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*
Website