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

DataStore首次启动读取非预期非空值,修改applicationId后恢复正常的问题求助

DataStore首次启动读取非预期非空值,修改applicationId后恢复正常的问题求助

大家好,我最近在项目里用DataStore处理应用设置的加载和保存,结果碰到了一个特别费解的问题:

经过几次安装卸载应用的测试后,我发现首次启动应用时,preferences[PreferencesKeys.LANGUAGE]居然返回了"EN"这个值,但按照逻辑,这个键还没被写入过,理应是null才对。

更奇怪的是,当我修改项目的applicationId之后,再次首次启动应用,这个值就变成了预期的null。感觉像是某个地方存在缓存,但诡异的是卸载应用后这个缓存并没有被清除?

下面是我的环境信息:

  • Android Studio版本:Koala Feature Drop | 2024.1.2 Patch 1
  • 测试设备系统:Android 13 TKQ1.221114.001
  • DataStore依赖版本:datastorePreferences = "1.1.1"

相关代码片段如下:

语言枚举类

enum class LanguageEnum(val title: String) {
    EN("English"),
    RU("Русский")
}

PreferencesKeys定义

object PreferencesKeys {
    val LANGUAGE = stringPreferencesKey("language")
}

状态变量与DataStore读取逻辑

val language: MutableState<LanguageEnum> = mutableStateOf(LanguageEnum.RU)

//...

CoroutineScope(Dispatchers.IO).launch {
    val languageFlow = context.dataStore.data
        .map { preferences -> preferences[PreferencesKeys.LANGUAGE] }
    // 后续的状态更新逻辑...
}

我已经试过卸载应用、手动清除应用缓存、重启设备这些常规操作,但都没能解决问题,只有修改applicationId才能让首次启动的读取恢复正常。有没有大佬遇到过类似的情况?或者能帮我分析下可能的原因?

备注:内容来源于stack exchange,提问作者untenty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 02:45:30