我正在寻找使用android存储一些数据的方法,我尝试使用数据存储区(jetpack android)。
我实际上是:
class StoreToken(context:Context){
private val dataStore = context.createDataStore(name = "token")
companion object{
val TOKEN_ACCESS_CIPHER_KEY = preferencesKey<String>("TOKEN_ACCESS_CIPHER")
}
suspend fun storeToken(accessCipher: String){
dataStore.edit {
it[TOKEN_ACCESS_CIPHER_KEY] = accessCipher
}
}
val accessCipher = dataStore.data.map{ it[TOKEN_ACCESS_CIPHER_KEY] ?: "none" }
}
我将我的access_cipher_key存储在此处: 在Kotlin课堂上,他们使用OkHttp进行api调用
GlobalScope.launch {
StoreToken(context).storeToken("key")
}
所以现在,当我尝试阅读它时,我会这样做的:(我把它加点了):
class HomeLoggedActivity : AppCompatActivity() {
lateinit var storeToken: StoreToken
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home_logged)
storeToken = StoreToken(this)
storeToken.accessCipher
}
}
我尝试了很多事情来读取它(迭代,字符串化,...) 我认为这可能是异步错误,或者我的思维过程与异步无关
答案 0 :(得分:0)
我找到了解决方案::
GlobalScope.launch {
storeToken.accessCipher.collect {
println(it)
}
只需使用.collect即可! (您需要在协程中,这就是为什么我在那里直接使用globalScope的原因)