DataStore — это относительно новый метод хранения постоянных данных типа ключ-значение в Android, призванный стать лучшей заменой SharedPreferences.

Существует 2 типа DataStore:

  1. Хранилище данных настроек
  2. Proto DataStore (или DataStore Typed)

В этой первой статье мы создадим простое приложение, демонстрирующее использование первого типа DataStore, Preferences DataStore.

Где исходный код?



tl;dr

а. О хранилище данных

Ключевые преимущества использования DataStore вместо SharedPreferences, на мой взгляд, заключаются в следующем:

  1. DataStore использует Flow (Flow очень похож на LiveData, где вы можете наблюдать за значением каждый раз, когда оно изменяется). SharedPreferences не имеет встроенной поддержки Flow.
  2. Proto DataStore предлагает безопасность типов. SharedPreferences (и Preferences DataStore) не обеспечивают безопасность типов.

б. О хранилище данных настроек

Вот Preferences DataStore в действии:

Как вы можете видеть выше, с Preferences DataStore это приложение сохраняет несколько примитивных типов данных:

  1. Integer
  2. String
  3. Boolean

Также возможно сохранить эти примитивные типы: Double, Float, Long и Set<String>.

Пошаговое объяснение

Вот как вы делаете приложение, показанное на изображении выше.

1. Откройте Android Studio. Создайте новый проект с опцией «Пустая активность».

2. Добавьте зависимости datastore-preferences и lifecycle-runtime-ktx в файл app/build.gradle. Нам нужна библиотека Lifecycle, потому что нам нужно использовать Coroutine, чтобы иметь возможность использовать Flow.

3. Далее строим макет, activity_main.xml. Вот как это выглядит и необходимый код ниже:

4. Наконец, мы собираемся обновить файл MainActivity.kt. Вы можете напрямую скопировать и вставить приведенный ниже код, но вот краткое описание того, как это работает. Сначала мы получаем объект DataStore с помощью preferencesDataStore. Затем для каждого примитивного типа данных (Int, String и Boolean) мы извлекаем предыдущее сохраненное значение DataStore, а также устанавливаем прослушиватель для обновления значения DataStore.

5. Вот и все! Теперь запустите приложение на своем устройстве и попробуйте сами. Попробуйте обновить значения несколько раз, а затем закрыть приложение. При повторном открытии приложения значения должны быть сохранены.

Спасибо за чтение!