Хранилище данных

Храните данные асинхронно, последовательно и транзакционно, преодолевая некоторые недостатки SharedPreferences
Последнее обновление Стабильный релиз Кандидат на релиз Бета-релиз Альфа-релиз
20 мая 2025 г. 1.1.7 - - 1.2.0-альфа02

Объявление зависимостей

Чтобы добавить зависимость от DataStore, необходимо добавить репозиторий Google Maven в свой проект. Прочтите репозиторий Google Maven для получения дополнительной информации.

Существуют две реализации DataStore: Preferences и Proto . Выберите одну из них. Вы также можете добавить зависимости Android-free к любой из реализаций.

Добавьте зависимости для необходимой вам реализации в файл build.gradle вашего приложения или модуля:

Настройки хранилища данных

классный

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation "androidx.datastore:datastore-preferences:1.1.7"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.7"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.7"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-preferences-core:1.1.7"
    }
    

Котлин

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation("androidx.datastore:datastore-preferences:1.1.7")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.7")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-preferences-rxjava3:1.1.7")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-preferences-core:1.1.7")
    }
    

Прото хранилище данных

классный

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation "androidx.datastore:datastore:1.1.7"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.1.7"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-rxjava3:1.1.7"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-core:1.1.7"
    }
    

Котлин

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation("androidx.datastore:datastore:1.1.7")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.1.7")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.1.7")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-core:1.1.7")
    }
    

Обратная связь

Ваши отзывы помогают сделать Jetpack лучше. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новый выпуск

Более подробную информацию смотрите в документации Issue Tracker .

Версия 1.2

Версия 1.2.0-альфа02

7 мая 2025 г.

Выпущен androidx.datastore:datastore-*:1.2.0-alpha02 . Версия 1.2.0-alpha02 содержит эти коммиты .

Изменения API

  • Добавлена ​​поддержка многопроцессорности в GuavaDataStore . ( e0d608a ).
  • Добавлен вспомогательный метод для создания GuavaDataStore из DataStore . ( 9af26f4 )
  • Для проектов, выпущенных с использованием Kotlin 2.0, требуется использование KGP 2.0.0 или более поздней версии. ( Idb6b5 )
  • Замените существующую перегрузку datastore методом делегата для инициализации хранилища данных, которое будет использоваться во время прямой загрузки. ( If71b9 )

Версия 1.2.0-альфа01

26 марта 2025 г.

Выпущен androidx.datastore:datastore-*:1.2.0-alpha01 . Версия 1.2.0-alpha01 содержит эти коммиты .

Новые возможности

  • Добавлен модуль datastore-guava для предоставления API, дружественных пользователям Java и Guava ListenableFuture через GuavaDataStore . ( Iadd5e0 )
  • Теперь поддерживается использование DataStore в режиме DirectBoot . Чтобы создать хранилище данных для использования в режиме прямой загрузки, его необходимо создать в хранилище Device Protected. Этого можно добиться с помощью следующих новых API DataStore : createInDeviceProtectedStorage() в DataStoreFactory и deviceProtectedDataStore() в DataStoreDelegate . ( Ib90e56 )

Изменения API

  • Добавлен PreferencesFileSerializer , который реализует интерфейс androidx.datastore.core.Serializer для использования с FileStorage . ( I4c71f3 )

Исправление ошибок

  • Решена проблема FileNotFoundException в OkioStorage при запуске путем добавления второй попытки чтения данных в случае состояния гонки. ( I43b3fb , b/337870543 )
  • Определен конструктор по умолчанию для ReplaceFileCorruptionHandler для общего использования кода. ( I795b05 , b/358138957 )

Версия 1.1

Версия 1.1.7

20 мая 2025 г.

Выпущен androidx.datastore:datastore-*:1.1.7 . Версия 1.1.7 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​проблема с отсутствующими правилами Proguard в артефакте Android datastore-preferences-core . ( 3f3f6e , b/413078297 )

Версия 1.1.6

7 мая 2025 г.

Выпущен androidx.datastore:datastore-*:1.1.6 . Версия 1.1.6 содержит эти коммиты .

Исправление ошибок

  • Решена проблема, из-за которой метаданные Gradle были повреждены в версии 1.1.5 . Эта проблема была вызвана ошибкой в ​​новом плагине AGP KMP DSL, которая не позволяла автоматически включать метаданные для всех целевых платформ. Ошибка приводит к тому, что некоторые методы DataStore Android больше не видны в клиентских сборках. Исправление заключается в использовании старого DSL android в build.gradle вместо androidLibrary . ( 7801abf )

Версия 1.1.5

23 апреля 2025 г.

Выпущен androidx.datastore:datastore-*:1.1.5 . Версия 1.1.5 содержит эти коммиты .

Исправление ошибок

  • Для смягчения проблем CorruptionException в PreferencesDataStore , хранилище по умолчанию было изменено с OkioStorage на FileStorage . Это изменение было реализовано путем введения PreferencesFileSerializer . b/346197747

Версия 1.1.4

26 марта 2025 г.

Выпущен androidx.datastore:datastore-*:1.1.4 . Версия 1.1.4 содержит эти коммиты .

Исправление ошибок

  • Замените хранилище по умолчанию с OkioStorage на FileStorage , чтобы повысить надежность за счет уменьшения CorruptionException . ( I71181 , b/346197747 )

Версия 1.1.3

26 февраля 2025 г.

Выпущен androidx.datastore:datastore-*:1.1.3 . Версия 1.1.3 содержит эти коммиты .

Исправление ошибок

  • Решена проблема FileNotFoundException в OkioStorage , возникавшая при запуске приложения. Если первоначальная попытка чтения файла не удалась, будет предпринята вторая попытка в случае возникновения состояния гонки из-за того, что файл был создан другим процессом во время первоначального чтения. ( I43b3f , b/337870543 )

Версия 1.1.2

15 января 2025 г.

Выпущен androidx.datastore:datastore-*:1.1.2 . Версия 1.1.2 содержит эти коммиты .

Исправление ошибок

  • Уменьшить задержку горячего чтения ( DataStore.data.first() ) в 8 раз. ( 22b8a40 )
  • ReplaceFileCorruptionHandler можно создать из общего кода KMP. ( 7632e839 )

Версия 1.1.1

1 мая 2024 г.

Выпущен androidx.datastore:datastore-*:1.1.1 . Версия 1.1.1 содержит эти коммиты .

Исправление ошибок

  • Смягчена ложная тревога Linux при ошибке «Возможна взаимоблокировка ресурсов» в случае, когда несколько экземпляров DataStore пытаются выполнить запись из разных процессов, путем отмены блокировки файла.

Версия 1.1.0

17 апреля 2024 г.

Выпущен androidx.datastore:datastore-*:1.1.0 . Версия 1.1.0 содержит эти коммиты .

Основные изменения с момента выпуска 1.0.0

Пожалуйста, ознакомьтесь с примечаниями к выпуску альфа- и бета-версий 1.1.0 для получения дополнительной информации. Некоторые из основных обновлений в 1.1.0:

  • DataStore теперь поддерживает несколько процессов, обращающихся к одному и тому же файлу, с поддержкой наблюдения между процессами.
  • Новый интерфейс хранилища позволяет вам настраивать способ хранения или сериализации ваших моделей данных.
  • Теперь вы можете использовать DataStore в проектах Kotlin Multiplatform.

Версия 1.1.0-rc01

3 апреля 2024 г.

Выпущен androidx.datastore:datastore-*:1.1.0-rc01 . Версия 1.1.0-rc01 содержит эти коммиты .

Исправление ошибок

  • Исправлено снижение производительности, при котором вызовы updateData не оптимизировались при записи на диск, если новые данные совпадают со старыми ( d64cfb5 ).
  • Исправлено состояние гонки, при котором MultiProcess DataStore мог пропускать аннулирования во время инициализации. (( b/326141553 ),( 094c2dd ))

Версия 1.1.0-beta02

6 марта 2024 г.

Выпущен androidx.datastore:datastore-*:1.1.0-beta02 . Версия 1.1.0-beta02 содержит эти коммиты .

Исправление ошибок

  • Улучшение производительности DataStore позволяет собирать уведомления об обновлениях только тогда, когда это наблюдается. ( b/267792241 )
    • Обратите внимание, что это изменение может вызвать UncompletedCoroutinesError в ваших тестах, если вы используете библиотеку тестирования Coroutines. Убедитесь, что вы передаете TestScope.backgroundScope при инициализации DataStore в ваших тестах, чтобы избежать этой проблемы.
  • Исправлена ​​проблема, из-за которой вложенные вызовы updateData в одном и том же экземпляре приводили к взаимоблокировке. ( b/241760537 )
  • DataStore больше не выдает исключения IOExceptions , если не удается удалить SharedPreferences во время миграции. ( b/195553816 )
  • Исправлена ​​ошибка, из-за которой переименование файла не выполнялось во время updateData в средах JVM, отличных от Android. ( b/203087070 )
  • Исправлена ​​проблема, из-за которой CorruptionException не обрабатывалось после инициализации DataStore . ( b/289582516 )

Версия 1.1.0-beta01

10 января 2024 г.

androidx.datastore:datastore-*:1.1.0-beta01 выпущен без изменений с 1.1.0-alpha07 . Версия 1.1.0-beta01 содержит эти коммиты.

Версия 1.1.0-альфа07

29 ноября 2023 г.

Выпущен androidx.datastore:datastore-*:1.1.0-alpha07 . Версия 1.1.0-alpha07 содержит эти коммиты.

Изменения API

  • Методы MultiProcessDataStoreFactory больше не являются экспериментальными. Аннотация @ExperimentalMultiProcessDataStore полностью удалена. ( Ieee54 , I8e607 )

Исправление ошибок

  • Разверните удаление аннотаций @ExperimentalMultiProcessDataStore для версии 1.1.0-alpha07. ( I8e607 )

Версия 1.1.0-альфа06

1 ноября 2023 г.

Выпущен androidx.datastore:datastore-*:1.1.0-alpha06 . Версия 1.1.0-alpha06 содержит эти коммиты.

Изменения API

  • Метод фабрики createSingleProcessCoordinator теперь получает путь к файлу ( String , java.io.File и okio.Path ) для соответствия createMultiProcessCoordinator . ( I211c8 , b/305755935 )

Версия 1.1.0-альфа05

6 сентября 2023 г.

Выпущен androidx.datastore:datastore-*:1.1.0-alpha05 . Версия 1.1.0-alpha05 содержит эти коммиты.

Изменения API

  • Хранилище данных FileStorage теперь доступно публично, поэтому клиенты могут предоставлять собственные параметры. ( Icb985 )
  • Изменен конструктор OkioStorage для принятия InterProcessCoordinator , чтобы его можно было использовать на Android с MultiProcessCoordinator . ( Iecea3 )

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой MultiProcessCoordinator не мог отслеживать несколько файлов в одном каталоге.
  • Исправлена ​​ошибка, из-за которой не удавалось обнаружить дубликаты файлов, если пути к файлам не нормализованы.
  • Исправлены неверные значения, возвращаемые RxDataStore#isDisposed .
  • Исправлена ​​отсутствующая конфигурация proguard для артефакта datstore-preferences-core .

Версия 1.1.0-альфа04

5 апреля 2023 г.

Выпущен androidx.datastore:datastore-*:1.1.0-alpha04 . Версия 1.1.0-alpha04 содержит эти коммиты.

Исправление ошибок

  • Улучшить внутреннюю реализацию, чтобы избежать состояния гонки, при котором поток данных DataStore может выдавать старое значение после обновления.

Версия 1.1.0-альфа03

24 марта 2023 г.

Выпущена версия androidx.datastore:datastore-*:1.1.0-alpha03 .

Исправление ошибок

  • Удалены ограничения зависимостей из артефактов Maven для обхода проблемы сборки в Kotlin Native Targets ( b/274786186 , KT-57531 ).

Версия 1.1.0-альфа02

22 марта 2023 г.

Выпущен androidx.datastore:datastore-*:1.1.0-alpha02 . Версия 1.1.0-alpha02 содержит эти коммиты.

Примечание

Обратите внимание, что эта версия включает важный внутренний рефакторинг, который объединяет реализации для однопроцессных и многопроцессных реализаций DataStore. Пожалуйста, следите за возможными непреднамеренными изменениями поведения (например, за временем уведомлений об обновлениях). Вы можете использовать компонент отслеживания проблем, чтобы сообщать о таких изменениях.

Новые возможности

  • Теперь вы можете использовать DataStore в проектах KMM . Обратите внимание, что не-Android цели DataStore все еще являются экспериментальными, но мы решили объединить версии, чтобы разработчикам было проще их опробовать.
  • Функции многопроцессности перенесены из androidx.datastore.multiprocess в androidx.datastore.core .
  • Добавьте новый фабричный метод в androidx.datastore.core.MultiProcessDataStoreFactory для создания экземпляров DataStore с объектами Storage для файловых операций.
  • Добавьте новый интерфейс InterProcessCoordinator , который помогает нескольким экземплярам DataStore взаимодействовать между процессами. Обратите внимание, что реализация InterProcessCoordinator для Multi-Process доступна только на Android.

Изменения API

  • Добавьте InterProcessCoordinator в StorageConnection в интерфейсе datastore-core ( I555bb )
  • Измените API в ядре хранилища данных MultiProcessDataStoreFactory для использования хранилища. ( Iac02f )
  • Переместить публичные API из datastore-multiprocess в datastore-core ( I76d7c )
  • Выведенный PreferencesSerializer из datastore-preferences-core ( I4b788 )
  • Добавление аннотации @JvmDefaultWithCompatibility ( I8f206 )

Версия 1.1.0-альфа01

9 ноября 2022 г.

Выпущен androidx.datastore:datastore-*:1.1.0-alpha01 . Версия 1.1.0-alpha01 содержит эти коммиты.

Новые возможности

  • Поддержка многопроцессных вариантов использования, где гарантируется согласованность данных между экземплярами DataStore в разных процессах. Добавьте MultiProcessDataStoreFactory#create для создания таких экземпляров DataStore .
  • Новый интерфейс Storage, который позволяет переключать базовый механизм хранения для Datastore . Предоставляются реализации для java.io и okio. Фабрики DataStore имеют новые методы, которые принимают этот объект Storage.

Изменения API

  • Измените API в ядре хранилища данных MultiProcessDataStoreFactory для использования хранилища. ( Iac02f )
  • Переместить публичные API из datastore-multiprocess в datastore-core ( I76d7c )
  • Выведенный PreferencesSerializer из datastore-preferences-core ( I4b788 )

Версия 1.0.0

Версия 1.0.0

4 августа 2021 г.

Выпущен androidx.datastore:datastore-*:1.0.0 . Версия 1.0.0 содержит эти коммиты.

Основные особенности 1.0.0

Jetpack DataStore — это решение для хранения данных, позволяющее хранить пары «ключ-значение» или типизированные объекты с буферами протоколов. DataStore использует сопрограммы Kotlin и Flow для асинхронного, последовательного и транзакционного хранения данных.

Версия 1.0.0-rc02

21 июля 2021 г.

Выпущен androidx.datastore:datastore-*:1.0.0-rc02 . Версия 1.0.0-rc02 содержит эти коммиты.

Исправление ошибок

  • Уточните, что SharedPreferencesMigration не запускается, если нет ключей. ( Icfa32 , b/192824325 )
  • Исправлена ​​ошибка, из-за которой SharedPreferencesMigration , созданный с помощью MIGRATE_ALL_KEYS , вызывал исключение, если запрошенный ключ еще не существует. ( Ie318a , b/192824325 )

Версия 1.0.0-rc01

30 июня 2021 г.

Выпущен androidx.datastore:datastore-*:1.0.0-rc01 . Версия 1.0.0-rc01 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка, при которой файл .java был случайно добавлен в финальный jar-файл ( I65d96 , b/188985637 ).

Версия 1.0.0-beta02

16 июня 2021 г.

Выпущен androidx.datastore:datastore-*:1.0.0-beta02 . Версия 1.0.0-beta02 содержит эти коммиты.

Исправление ошибок

  • Исправление ClassVerificationFailure ( b/187450483 )

Версия 1.0.0-beta01

21 апреля 2021 г.

Выпущен androidx.datastore:datastore-*:1.0.0-beta01 . Версия 1.0.0-beta01 содержит эти коммиты.

Изменения API

  • Удалить перегрузки JVM для методов, поддерживающих только Kotlin ( I2adc7 )

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой делегаты хранилища данных могли приводить к утечке контекстов ( Ie96fc , b/184415662 ).

Версия 1.0.0-альфа08

10 марта 2021 г.

Выпущен androidx.datastore:datastore-*:1.0.0-alpha08 . Версия 1.0.0-alpha08 содержит эти коммиты.

Изменения API

  • Теперь вы можете добавить миграцию, которая зависит от контекста, к делегату свойств dataStore и preferencesDataStore . ( I4ef69 , b/173726702 )
  • Добавляет вспомогательные функции для получения имени файла, если вы больше не используете делегат хранилища данных или context.createDataStore ( I60f9a )
  • Serializer writeTo и readFrom теперь приостанавливают работу. Если вы реализовали Serializer, вам нужно будет обновить свои функции, чтобы они стали приостанавливающими функциями. ( I1e58e )
  • Добавлены делегаты свойств для пользователей RxDataStore. ( Ied768 , b/173726702 )

Исправление ошибок

  • Ввести ограничения на публичное использование экспериментальных API ( I6aa29 , b/174531520 )

Версия 1.0.0-альфа07

24 февраля 2021 г.

Выпущен androidx.datastore:datastore-*:1.0.0-alpha07 . Версия 1.0.0-alpha07 содержит эти коммиты.

Изменения API

  • Функция расширения Context.createDataStore была удалена и заменена делегатом свойства globalDataStore. Вызовите globalDataStore один раз на верхнем уровне в вашем файле kotlin. Например:

    val Context.myDataStore by dataStore(...)
    

    Поместите это на верхний уровень вашего файла Kotlin, чтобы был только один его экземпляр. ( I57215 , b/173726702 )

  • Функции RxDataStore теперь находятся в классе RxDataStore вместо функций расширения в DataStore. ( Idccdb , b/177691248 )

  • Если вы хотите перенести EncryptedSharedPreferences (или напрямую загрузить SharedPreferences) в DataStore, вы теперь можете сделать это с помощью нового конструктора SharedPreferencesMigration, который позволяет вам внедрять SharedPreferences. ( I8e04e , b/177278510 )

Исправление ошибок

  • DataStore теперь выдаст исключение, если для одного и того же файла есть несколько активных DataStore. Если вы не управляли своим DataStore как Singleton или не гарантировали, что два экземпляра DataStore не будут одновременно активны для файла, то теперь вы можете увидеть исключения при чтении или записи в DataStore. Их можно исправить, управляя своим DataStore как Singleton. ( Ib43f4 , b/177691248 )
  • Исправлено поведение отмены при отмене области действия вызывающего объекта. ( I2c7b3 )

Версия 1.0.0-альфа06

13 января 2021 г.

Выпущен androidx.datastore:datastore-*:1.0.0-alpha06 . Версия 1.0.0-alpha06 содержит эти коммиты.

Новые возможности

  • Добавлены оболочки RxJava для DataStore. Артефакты datastore-rxjava2/3 содержат оболочки для основных API DataStore ( RxDataStore , RxDataStoreBuilder и RxDataMigration ). Артефакты datastore-preferences-rxjava2/3 содержат конструктор для создания Preferences DataStore.

Изменения API

  • Скрыть интерфейс CorruptionHandler. Не было причин делать его публичным, поскольку фабрика DataStore принимает только ReplaceFileCorruptionHandler. ( I0b3b3 , b/176032264 )
  • Метод preferencesKey<T>(name: String): Key<T> был удален и заменен методами, специфичными для каждого поддерживаемого типа, например preferencesKey<Int>("int") теперь называется intPreferencesKey("int") ( Ibcfac , b/170311106 )

Исправление ошибок

  • Исправлена ​​документация по DataStoreFactory, в которой не учитывался тот факт, что файл хранилища данных создается в подкаталоге «datastore/». ( Ica222 )

Версия 1.0.0-альфа05

2 декабря 2020 г.

Выпущен androidx.datastore:datastore-*:1.0.0-alpha05 . Версия 1.0.0-alpha05 содержит эти коммиты.

Исправление ошибок

  • Добавить улучшенную документацию и исключения для параллельных записей из хранилищ данных. ( Ia98a2 , b/173522155 , b/173726702 )
  • Теперь мы разрешаем (но не требуем) закрывать OutputStream, переданный в Serializer.writeTo() . ( I5c9bf , b/173037611 )

Версия 1.0.0-альфа04

17 ноября 2020 г.

Выпущен androidx.datastore:datastore-*:1.0.0-alpha04 . Версия 1.0.0-alpha04 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​проблема с упаковкой, которая приводит к следующему сбою в Preference Datastore 1.0.0-alpha03 : java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

Версия 1.0.0-альфа03

11 ноября 2020 г.

Выпущен androidx.datastore:datastore-*:1.0.0-alpha03 . Версия 1.0.0-alpha03 содержит эти коммиты.

Новые возможности

  • Настройки теперь поддерживают значения двойной точности (что полезно, если вам нужна большая точность, чем у чисел с плавающей точкой) ( I5be8f , b/169471808 )

Изменения API

  • Создана чистая зависимость Kotlin для хранилища данных, что позволяет ускорить компиляцию. androidx.datastore:datastore-core содержит основные API Kotlin, а androidx.datastore:datastore содержит API, зависящие от Android (включая SharedPreferencesMigration и конструктор Context.createDataStore .) ( I42d75 , b/168512698 )
  • Разделение целей для хранилища данных настроек для более быстрой компиляции Kotlin ( Ia3c19 )
  • Сериализаторам теперь требуется новое свойство для значения по умолчанию, которое будет использоваться, если на диске нет данных. Это упрощает реализацию пользовательских сериализаторов, так что пользователям не нужно специально обрабатывать пустые входные потоки (пустые входные потоки не анализируются с помощью json).

    • Также теперь есть проверка, подтверждающая, что выходной поток, предоставленный writeTo(), не закрыт, и если он закрыт, то выдаются исключения ( I16e29 ).
  • Создание внутреннего конструктора для SharedPreferencesView. Изначально он был публичным, чтобы обеспечить возможность тестирования. Вместо этого тесты должны создавать SharedPreferencesMigration и тестировать его. ( I93891 )

Исправление ошибок

  • Параметр produceFile в DataStoreFactory и PreferenceDataStoreFactory теперь является последним параметром в списке, что позволяет использовать синтаксис завершающих лямбда-выражений Kotlin. ( Ibe7f1 , b/169425442 )
  • Следуя новым явным требованиям API для Kotlin ( I5ae1e )

Известные проблемы

  • Preference Datastore аварийно завершает работу с ошибкой java.lang.NoClassDefFoundError . ( b/173036843 )

Версия 1.0.0-альфа02

14 октября 2020 г.

Выпущены androidx.datastore:datastore-core:1.0.0-alpha02 и androidx.datastore:datastore-preferences:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит эти коммиты.

Исправление ошибок

  • Добавлена ​​защита от мутации в datastore-core. Мутация нарушает использование хранилища данных для людей, использующих хранилище данных с типами non-proto/non-preferences ( I6aa84 )
  • Добавлен метод toString в Preferences.kt для упрощения отладки текущего состояния ( I96006 ).
  • Добавлено исключение для защиты от неправильного использования DataStore.Preferences ( I1134d )
  • Исправлена ​​ошибка, приводившая к сбою приложения при запуске ( I69237 , b/168580258 ).

Версия 1.0.0-альфа01

2 сентября 2020 г.

Выпущены androidx.datastore:datastore-core:1.0.0-alpha01 и androidx.datastore:datastore-preferences:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит эти коммиты.

Новые возможности

Jetpack DataStore — это новое и улучшенное решение для хранения данных, призванное заменить SharedPreferences. DataStore, созданный на основе сопрограмм Kotlin и Flow, предоставляет две различные реализации:

  • Proto DataStore, позволяющий хранить типизированные объекты (с поддержкой буферов протоколов )
  • Preferences DataStore, в котором хранятся пары ключ-значение

Данные хранятся асинхронно, последовательно и транзакционно, что позволяет преодолеть большинство недостатков SharedPreferences.