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

