DataStore
最近更新时间 | 当前稳定版 | 下一候选版本 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2020 年 12 月 2 日 | - | - | - | 1.0.0-alpha05 |
声明依赖项
如需添加 DataStore 的依赖项,您必须将 Google Maven 代码库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库。
DataStore 有两种实现方式:Preferences 和 Proto,从中选择其一即可。您还可以向任一实现方式添加与 Android 无关的依赖项。
在应用或模块的 build.gradle
文件中添加所需实现方式的依赖项:
类型化
// Typed DataStore (Typed API surface, such as Proto) dependencies { implementation "androidx.datastore:datastore:1.0.0-alpha05" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-core:1.0.0-alpha05" }
偏好设置
// Preferences DataStore (SharedPreferences like APIs) dependencies { implementation "androidx.datastore:datastore-preferences:1.0.0-alpha05" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-preferences-core:1.0.0-alpha05" }
反馈
您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对库的改进有某些建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。
如需了解详情,请参阅问题跟踪器文档。
版本 1.0.0
版本 1.0.0-alpha05
2020 年 12 月 2 日
发布了 androidx.datastore:datastore-*:1.0.0-alpha05
。版本 1.0.0-alpha05 中包含这些提交内容。
问题修复
- 针对数据存储区中的并发写入添加了更好的文档和异常。(Ia98a2、b/173522155、b/173726702)
- 现在,我们允许(但不强求)关闭传递给
Serializer.writeTo()
的 OutputStream。(I5c9bf、b/173037611)
版本 1.0.0-alpha04
2020 年 11 月 17 日
发布了 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-alpha03
2020 年 11 月 11 日
发布了 androidx.datastore:datastore-*:1.0.0-alpha03
。版本 1.0.0-alpha03 中包含这些提交内容。
新功能
- Preferences 现在支持双精度值(如果您需要比浮点数更高的精度,这一点非常有用)(I5be8f、b/169471808)
API 变更
- 为数据存储区创建了纯 Kotlin 依赖项,以加快编译速度。
androidx.datastore:datastore-core
包含仅适用于 Kotlin 的核心 API,androidx.datastore:datastore
包含依赖 Android 的 API(包括SharedPreferencesMigration
和Context.createDataStore
构造函数。)(I42d75、b/168512698) - 拆分 Preferences DataStore 的目标,以加快 Kotlin 编译速度 (Ia3c19)
序列化器现在需要将新的属性作为默认值,系统会在磁盘上没有任何数据时使用该值。这样可以更轻松地实现自定义序列化器,用户不必将空输入流作为特例处理(对于空输入流,无法使用 json 进行解析)。
- 此外,现在还会进行一项检查,以确认提供给 writeTo() 的输出流未关闭,以及关闭时是否会抛出异常 (I16e29)
将 SharedPreferencesView 的构造函数变为内部构造函数。为了进行测试,该构造函数最初处于公开状态。测试应改为构造一个 SharedPreferencesMigration,然后对其进行测试。(I93891)
问题修复
DataStoreFactory
和PreferenceDataStoreFactory
上的produceFile
参数现在是列表中的最后一个参数,因此您可以使用 Kotlin 尾随 lambda 语法。(Ibe7f1、b/169425442)- 遵循明确的 API 新要求(适用于 Kotlin)(I5ae1e)
已知问题
- Preference Datastore 会崩溃,并显示
java.lang.NoClassDefFoundError
。(b/173036843)
版本 1.0.0-alpha02
2020 年 10 月 14 日
发布了 androidx.datastore:datastore-core:1.0.0-alpha02
和 androidx.datastore:datastore-preferences:1.0.0-alpha02
。版本 1.0.0-alpha02 中包含这些提交内容。
问题修复
- 在 datastore-core 中添加了突变防护措施。对于将数据存储区用于非 proto/非偏好类型的用户而言,突变会破坏数据存储区的使用 (I6aa84)
- 向 Preferences.kt 添加了
toString
方法,使当前状态易于调试 (I96006) - 添加了防止滥用
DataStore.Preferences
的异常事件 (I1134d) - 修复了导致应用在启动时崩溃的问题(I69237、b/168580258)
版本 1.0.0-alpha01
2020 年 9 月 2 日
发布了 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 协程和流程构建而成,提供两种不同的实现:
- Proto DataStore,它允许您存储类型化的对象(由协议缓冲区提供支持)
- Preferences DataStore,用于存储键值对
以异步、一致的事务方式存储数据,克服了 SharedPreferences 的大部分缺点。