我对Android还是陌生的,而且在此MVVM模式中,我看到了一些教程,其中有livedata用于在那里获取用户数据并在一些与会话相关的类中检查经过身份验证的用户。根据我的理解,当需要更新某些数据时,会使用livedata来监听实现可观察模式的更改。我使用kotlin Coroutines在此处获取用户响应:
Coroutines.main {
try {
val loginresponse = repository.userLogin(email!!, password!!)
loginresponse.token.let {
val keys = listOf("TOKEN", "USERNAME", "USERID")
val values = listOf(
loginresponse.token,
loginresponse.username,
loginresponse.id.toString()
)
repository.saveUserInfo(prefs, keys, values)
authListener?.onSuccess(it)
val intent = Intent(mContext, Sos::class.java)
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
mContext.startActivity(intent)
}
} catch (e: ApiException) {
authListener?.onFailure(e.toString())
} catch (e: NoInternetException) {
authListener?.onFailure(e.message!!)
}
}
可以使用协程,还是应该使用livedata修改用户以在某些会话管理类中使用它?
如果您不需要观察数据的变化并将其传播到UI时就遵循生命周期的变化,则无需使用LiveData。使用RX或Kotlin的协程,您将拥有更多的运算符和线程控制功能。 LiveData不能完全控制您的线程管理。 LiveData基本上有两个选项:从工作线程同步更新或异步值发布。