如何在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
相关产品推荐
相关产品推荐

