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

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

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

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

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

Добавьте зависимости для необходимой вам реализации в файл 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")
    }
    

Proto DataStore

Круто

    // 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. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.

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

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

Версия 1.2

Версия 1.2.0-beta01

22 октября 2025 г.

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

Изменения API

  • Сделайте CorruptionHandler публичным. ( I9ac35 , b/452406457 )
  • Используйте androidx.core.util.Function в GuavaDataStore . ( I71eae , b/448563999 )
  • Добавьте перегрузку для GuavaDataStore.from , которая принимает Executor вместо CoroutineContext . ( I989fa , b/448563183 )

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

  • Исправлена ​​ошибка java.lang.UnsatisfiedLinkError при использовании DataStore в приложении, оптимизированном с помощью R8, но не использующем getDefaultProguardFile('android-proguard-optimize.txt') . ( I27d0d , b/434696293 )
  • Исправлена ​​ошибка, из-за которой операции GuavaDataStore могли некорректно выполняться в вызывающем потоке (например, в основном потоке) вместо указанного диспетчера ввода-вывода. ( Ic91ea , b/441801112 )

Версия 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 . Чтобы создать хранилище данных для использования в режиме прямой загрузки, его необходимо создать в защищённом хранилище устройства. Это можно сделать с помощью следующих новых 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 , из-за которой метаданные Gradle были повреждены. Эта проблема была вызвана ошибкой в ​​новом DSL-плагине AGP KMP, препятствовавшей автоматическому включению метаданных для всех целевых платформ. Эта ошибка приводит к тому, что некоторые методы 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 в ваших тестах, если вы используете библиотеку тестирования корутин. Чтобы избежать этой проблемы, обязательно передайте 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 в проектах KMM . Обратите внимание, что версии DataStore, не относящиеся к Android, всё ещё находятся в экспериментальном состоянии, но мы решили объединить версии, чтобы разработчикам было проще их опробовать.
  • Функции многопроцессности перенесены из androidx.datastore.multiprocess в androidx.datastore.core .
  • Добавьте новый фабричный метод в androidx.datastore.core.MultiProcessDataStoreFactory для создания экземпляров DataStore с объектами Storage для файловых операций.
  • Добавьте новый интерфейс InterProcessCoordinator , который позволяет нескольким экземплярам DataStore взаимодействовать между процессами. Обратите внимание, что многопроцессная реализация InterProcessCoordinator доступна только на 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 )
  • Функции сериализатора writeTo и readFrom теперь приостанавливаются. Если вы реализовали сериализатор, вам необходимо обновить свои функции, чтобы они стали приостанавливающимися. ( 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
    • Первоначально сообщение о сбое было опубликовано здесь: b/173036843
    • ( I4712d , b/173036843 )

Версия 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 )

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

  • Хранилище данных настроек аварийно завершает работу с ошибкой 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. Мутации нарушают работу хранилища данных для пользователей, использующих хранилища с типами данных, отличными от proto и не относящимися к настройкам ( 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.