Google 致力于为黑人社区推动种族平等。查看具体举措

DataStore

以异步、一致的事务方式存储数据,克服了 SharedPreferences 的一些缺点
最近更新时间 当前稳定版 下一候选版本 Beta 版 Alpha 版
2020 年 11 月 11 日 - - - 1.0.0-alpha03

声明依赖项

如需添加 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-alpha03"
}
// Alternativey - use the following artifact without an Android dependency.
dependencies {
  implementation "androidx.datastore:datastore-core:1.0.0-alpha03"
}

偏好设置

// Preferences DataStore (SharedPreferences like APIs)
dependencies {
  implementation "androidx.datastore:datastore-preferences:1.0.0-alpha03"
}
// Alternativey - use the following artifact without an Android dependency.
dependencies {
  implementation "androidx.datastore:datastore-preferences-core:1.0.0-alpha03"
}

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对库的改进有某些建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 1.0.0

版本 1.0.0-alpha03

2020 年 11 月 11 日

发布了 androidx.datastore:datastore-*:1.0.0-alpha03版本 1.0.0-alpha03 中包含这些提交内容

新功能

  • Preferences 现在支持双精度值(如果您需要比浮点数更高的精度,这一点非常有用)(I5be8fb/169471808

API 变更

  • 为数据存储区创建了纯 Kotlin 依赖项,以加快编译速度。androidx.datastore:datastore-core 包含仅适用于 Kotlin 的核心 API,androidx.datastore:datastore 包含依赖 Android 的 API(包括 SharedPreferencesMigrationContext.createDataStore 构造函数。)(I42d75b/168512698
  • 拆分 Preferences DataStore 的目标,以加快 Kotlin 编译速度 (Ia3c19)
  • 序列化器现在需要将新的属性作为默认值,系统会在磁盘上没有任何数据时使用该值。这样可以更轻松地实现自定义序列化器,用户不必将空输入流作为特例处理(对于空输入流,无法使用 json 进行解析)。

    • 此外,现在还会进行一项检查,以确认提供给 writeTo() 的输出流未关闭,以及关闭时是否会抛出异常 (I16e29)
  • 将 SharedPreferencesView 的构造函数设为内部。为了进行测试,该构造函数最初处于公开状态。测试应改为构造一个 SharedPreferencesMigration,然后对其进行测试。(I93891)

问题修复

  • DataStoreFactoryPreferenceDataStoreFactory 上的 produceFile 参数现在是列表中的最后一个参数,因此您可以使用 Kotlin 尾随 lambda 语法。(Ibe7f1b/169425442
  • 遵循明确的 API 新要求(适用于 Kotlin)(I5ae1e)

版本 1.0.0-alpha02

2020 年 10 月 14 日

发布了 androidx.datastore:datastore-core:1.0.0-alpha02androidx.datastore:datastore-preferences:1.0.0-alpha02版本 1.0.0-alpha02 中包含这些提交内容

问题修复

  • 在 datastore-core 中添加了突变防护措施。对于将数据存储区用于非 proto/非偏好类型的用户而言,突变会破坏数据存储区的使用 (I6aa84)
  • 向 Preferences.kt 添加了 toString 方法,使当前状态易于调试 (I96006)
  • 添加了防止滥用 DataStore.Preferences 的异常事件 (I1134d)
  • 修复了导致应用在启动时崩溃的问题(I69237b/168580258

版本 1.0.0-alpha01

2020 年 9 月 2 日

发布了 androidx.datastore:datastore-core:1.0.0-alpha01androidx.datastore:datastore-preferences:1.0.0-alpha01版本 1.0.0-alpha01 中包含这些提交内容

新功能

Jetpack DataStore 是经过改进的新版数据存储解决方案,旨在取代 SharedPreferences。DataStore 基于 Kotlin 协程和流程构建而成,提供两种不同的实现:

  • Proto DataStore,它允许您存储类型化的对象(由协议缓冲区提供支持)
  • Preferences DataStore,用于存储键值对

以异步、一致的事务方式存储数据,克服了 SharedPreferences 的大部分缺点。