目录
0.为啥用ViewModel进行数据的存取
1.MVVM的具体含义
2.viewModel内部构造
3.配置viewModel
3.1 声明一个ViewModel实例类
3.2 viewModel功能实现
0.为啥用ViewModel进行数据的存取
通过持有
LiveData
维护保存数据的状态为啥维护 ? : 当Activity旋转,跳转时,进行控件销毁,数据丢失
MutableLiveData可以将数据保存在一个特殊内存空间
保存多久? : 在Fragment,Activity中初始化ViewModel,将他们本身的lifecycle传给 viewModel,viewModel的生命周期跟他们同步
ViewModel的优势: 生命周期和数据持久化,它就适用于Activity和Fragment,
其次就是异步回调,不会造成内存泄漏,
再次就是对View层和Model层进行隔离,是两者不存在耦合性。
1.MVVM的具体含义
M : model 自定义类
V : view UI界面以及其控件
VM : viewModel 多界面 统一存取数据,可利用databind进行view和model的数据的双向更新
2.viewModel内部构造
继承viewModel或者AndroidVIewModel(Application)
内部定义——“共享数据” , 即多个界面共用一套数据,只要是共享数据,定义在viewModel
MutableLiveData(默认初始值)
实现共享数据的set和get方法
set 方法 ——》定义的共享变量. postVaule()
get 方法 ——》定义的共享变量. value()
3.配置viewModel
3.1 声明一个ViewModel实例类
三种声明viewModel方式
第一,如自定义控件 不存在lifecycle ,viewModel靠外部传入
第二、简单方法 利用声明后缀 by viewModels()
通常在Fragment和Activity这种自带lifecycle
第三、标准方法 利用ViewModelProvider
3.2 viewModel功能实现
第一:如自定义控件,Adapter(需要传入viewModel),将本身viewModel传入其中
第二:提供各界面 修改共享数据(viewModel内的set方法)
第三:数据观察,实时更新UI界面的数据
实际为 找到共享数据.observe(传入自身lifecycleOwner) { // 监视到该项共享数据改变后,立刻执行的操作}