Android ViewModel使用与源码解析
16lz
2021-01-23
Android 中的ViewModel的使用主要分为3部分
1、创建一个ViewModel类,例如
class MyViewModel: ViewModel(){ private val message:MutableLiveData by lazy{ MutableLiveData().also{ it.postValue("aaaaaaa") } } fun getMessage():LiveData{ return message }}
2、获取ViewModel并且添加LiveData数据的监听
val model = ViewModelProviders.of(this)[MyViewModel::class.java] model.getMessage().observe(this, Observer { messageTv.text = it })
3、改变数据
GlobalScope.launch(Dispatchers.Default){ delay(2000) it.postValue("aaaaaaa") }
使用比较简单,下面我们来看一下具体调用链
这个是获取ViewModel的整个流程
这个是获取添加观察监听的整个流程
这个是改变数据的整个流程
具体的源码就不说了,可以顺这个时序图去看。
他的主要思路是用观察者模式,将观察者用SafeIterableMap存储,将所有的ViewModel存储在类ViewModelStore(实质是HashMap)。在通知数据更新时结合Lifecycle来判断当前数据所依赖的生命周期状态。
更多相关文章
- android之解析json数据格式详解
- android 本地存取复杂数据
- git android 源码 ssl错误, 重新设置即可
- Ubuntu 16.04 配置android 源码开发/编译环境
- android 系统数据库
- Android 源码里packages里面的结构
- android ListView 刷新数据,加载时遇到的数组越界问题
- Android数据库操作工具类分享
- 【30篇突击 android】源码统计 十二