1

我对 AndroidX DataStore 的理解是操作应该是线程安全的和事务性的。但是我正在设置一个值,然后立即读取它,并且该值尚未更新。我究竟做错了什么?这应该是不可能的吧?

这是我的“get”和“set”函数。

fun getValue(keyStr: String): String
{
    val key = stringPreferencesKey(keyStr)
    val value = runBlocking {
        context.dataStore.data.map { it[key] ?: "" }
    }
    return runBlocking { value.first() }
}

fun setValue(keyStr: String, valueStr: String) {
    val key = stringPreferencesKey(keyStr)
    runBlocking {
        context.dataStore.edit { preferences -> preferences[key] = valueStr }
    }
}

以下是他们在我的应用程序的 CREATE 方法中如何调用它们。

    setValue("TEST", "testing")
    val test = getValue("TEST")

在“get”调用之后,test==""。

4

0 回答 0