Android 中的ViewModel的使用主要分为3部分
1、创建一个ViewModel类,例如
class MyViewModel: ViewModel(){
private val message:MutableLiveData<String> by lazy{
MutableLiveData<String>().also{
it.postValue("aaaaaaa")
}
}
fun getMessage():LiveData<String>{
return message
}
}
2、获取ViewModel并且添加LiveData数据的监听
val model = ViewModelProviders.of(this)[MyViewModel::class.java]
model.getMessage().observe(this, Observer<String> {
messageTv.text = it
})
3、改变数据
GlobalScope.launch(Dispatchers.Default){
delay(2000)
it.postValue("aaaaaaa")
}
使用比较简单,下面我们来看一下具体调用链
这个是获取ViewModel的整个流程

这个是获取添加观察监听的整个流程

这个是改变数据的整个流程

具体的源码就不说了,可以顺这个时序图去看。
他的主要思路是用观察者模式,将观察者用SafeIterableMap存储,将所有的ViewModel存储在类ViewModelStore(实质是HashMap)。在通知数据更新时结合Lifecycle来判断当前数据所依赖的生命周期状态。

本文详细介绍Android中ViewModel的使用方法,包括创建ViewModel类、获取并监听LiveData数据变化,以及如何改变数据。通过实例演示了观察者模式的应用,以及如何利用ViewModelStore存储ViewModel。
889

被折叠的 条评论
为什么被折叠?



