(字体放大会促进学习兴趣哦)
其他相关文章:
android之LifeCycle:https://blog.csdn.net/li6472/article/details/119795952?spm=1001.2014.3001.5501
android之LiveData:https://blog.csdn.net/li6472/article/details/119784791?spm=1001.2014.3001.5501
android之ViewModel:https://blog.csdn.net/li6472/article/details/119800423?spm=1001.2014.3001.5501
android之MVVM框架使用之xml详解:https://blog.csdn.net/li6472/article/details/119782825?spm=1001.2014.3001.5501
android之MVVM框架使用之BaseObservable与双向绑定:https://blog.csdn.net/li6472/article/details/119779950?spm=1001.2014.3001.5501
amdroid之MVVM写一个简单的程序:https://blog.csdn.net/li6472/article/details/119761806?spm=1001.2014.3001.5501
先上图
模型-视图-视图模型
解释一下
模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】mvvm模式的核心,它是连接view和model的桥梁
(很关键)关于数据监控传输请到https://blog.csdn.net/li6472/article/details/119779950
一 终极解释
MVVM是Model-View-ViewModel的简写
(它本质上就是MVC (Model-View- Controller)的改进版)
两个方向:
一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。
二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定。
总结:在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信。
精髓:(重要)
1、View和Model双向绑定,一方的改变都会影响另一方,开发者不用再去手动修改UI的数据。
2、不需要findViewById也不需要butterknife,不需要拿到具体的View去设置数据绑定监听器等等,这些都可以用DataBinding完成。
3、View和Model的双向绑定是支持生命周期检测的,不会担心页面销毁了还有回调发生,这个由lifeCycle完成。
4、不会像MVC一样导致Activity中代码量巨大,也不会像MVP一样出现大量的View和Presenter接口。项目结构更加低耦合。
因个人能力及精力有限,文中难免有讲解不到位的地方,还请各位读者谅解;也难免存在疏漏或理解错误的地方,恳请各位开发者拍砖!!!