[英]Authentication with Architecture Components MVVM, passing token from Repository to ViewModel
我想基于“官方”MVVM 存储库模型进行登录活动。
我查看了 Android Studio 的“登录”模板,并有点了解它是如何工作的。 下面的流程图显示了我如何规划类之间的数据流。 该模板不包含 WebService 部分,而是立即返回令牌而无需回调。
由于创建对 VM/Activity 的引用(在回调中)是不好的做法,有哪些选项可以将令牌传播回 VM(由虚线箭头表示)?
笔记:
谢谢
您不需要在存储库中创建LiveData
。 相反,您可以从 VM 调用repository.login(u,p)
并等待结果到达。 结果到达后,只需更新 VM 内的LiveData
实例。
无论如何,网络调用必须异步完成,或者您可以利用网络库(如 Retrofit)中的回调机制。
您的ViewModel
将如下所示(伪代码):
class LoginViewModel: ViewModel{
LiveData<Result> login(String username, String password){
LiveData<Result> resultLiveData = new MutableLiveData<Result>();
// Let it be an async. call from Retrofit
Repository.login(username, password, new Callback<Result>{
void onResult(Result result){
resultLiveData.value = result // update the livedata.
}
}
return resultLiveData;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.