You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在androidx.datastore:datastore-core:1.0.0-beta01版本中使用DataStore

1.0.0-beta01版本DataStore正确使用指南

依赖配置修正

你遇到的类找不到问题,核心原因是androidx.datastore:datastore-core:1.0.0-beta01仅包含DataStore核心基础实现,Preferences相关类和preferencesDataStoreKTX扩展都在独立依赖包中,需要按开发语言补全对应依赖:

  • Kotlin项目完整依赖(版本统一为1.0.0-beta01):
implementation "androidx.datastore:datastore-core:1.0.0-beta01"
implementation "androidx.datastore:datastore-preferences:1.0.0-beta01"
implementation "androidx.datastore:datastore-preferences-ktx:1.0.0-beta01"
  • Java项目不需要KTX扩展,仅引入前两个依赖即可。

Kotlin 基础使用示例

1. 声明全局单例DataStore实例

在顶层文件中定义Context扩展属性,避免重复初始化产生多实例冲突:

val Context.appDataStore by preferencesDataStore(name = "app_config")

2. 定义存储键

// 支持String、Int、Boolean、Long、Float、Double、Set<String>类型
val USER_NAME_KEY = stringPreferencesKey("user_name")

3. 写入数据

写入操作必须在协程中执行:

suspend fun saveUserName(name: String) {
    context.appDataStore.edit { preferences ->
        preferences[USER_NAME_KEY] = name
    }
}

4. 读取数据

通过Flow订阅数据变更:

val userNameFlow: Flow<String> = context.appDataStore.data
    .map { preferences ->
        // 未存储时返回默认空字符串
        preferences[USER_NAME_KEY] ?: ""
    }

// 协程中订阅数据流
lifecycleScope.launch {
    userNameFlow.collect { name ->
        // 处理读取到的name值
    }
}

注意事项

  • 该beta版本要求编译SDK版本≥30,低于该版本可能出现类找不到异常
  • DataStore读写操作默认在IO线程执行,不支持主线程同步调用
  • 禁止在局部代码块中重复初始化DataStore实例,否则会导致数据读写异常

内容的提问来源于stack exchange,提问作者IBAction

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 16:36:08