我希望用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 :在使用OkHttp进行api调用的kotlin类中。
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
}
}我尝试了很多方法来读它(迭代,字符串,... )我认为这可能是一个异步错误,或者我的思考过程在异步时很糟糕
发布于 2020-10-21 21:34:46
我找到了解决方案::
GlobalScope.launch {
storeToken.accessCipher.collect {
println(it)
}只要使用.collect就可以了!(你需要在一个协程中,这就是我使用globalScope的原因)
https://stackoverflow.com/questions/64464480
复制相似问题