Хранилище данных
Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
---|---|---|---|---|
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 и GuavaListenableFuture
черезGuavaDataStore
. ( Iadd5e0 ) - Теперь поддерживается использование
DataStore
в режимеDirectBoot
. Чтобы создать хранилище данных для использования в режиме прямой загрузки, его необходимо создать в защищённом хранилище устройства. Это можно сделать с помощью следующих новых APIDataStore
: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.