mvvm学习笔记
mvvm实际上是M(model),V(view),与VM(view-model)的三层架构。
mvvm的主要内容有两个方面:一个是代码的结构,一个是DataBinding的使用:
1、代码结构方面
建议代码按功能模块划分,在具体的模块下再细分为model、view、view_model三层。
-
其中,model层负责数据的获取(比如数据库的链接和增删改查操作、cameraDevice的获取等等),本身被view_model层调用,也可以持有viewmodel的引用,修改部分的值;
-
view层负责页面的显示和页面逻辑的绑定(一般我们的activity、自定义view等都可以放在里面),持有viewmodel的引用,一般不直接与model层交互。
-
viewmodel层对应的是mvc里的controller,我们一般继承android自己的viewmodel类,一些创建比较耗时的对象、具体的数据操作逻辑、和model的交互等等都可以放到viewmodel里,持有model层的引用,被view层和model层引用。
请注意,viewmodel正常情况下不要持有包含context的引用(activity等),如果有特殊情况需要使用context,请继承AndroidViewModel。
viewmodel具体使用请参考:viewmodel官方文档
推荐几篇文章:
Android应用架构之MVVM模式
Android MVVM 模式
ViewModel简介
2、DataBinding方面
要使用DataBinding,首先需要在guild里引入,然后sync一下
android {
...
defaultConfig {
...
dataBinding {
enabled = true
}
}
sync完成后我们可以去到我们之前创建的项目下面,选中底层布局的layout,按Alt+Enter,
(有一些文章里写的用Alt+Insert,AndroidStudio4.1.3实测无效)
选中Convert to data binding layout,Enter确认。
最后应该是出来这个界面就对了
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://s