l 最近项目采用mvvm架构架构,确实能带来很多方便,完全省去了 findViewById和监听对象,再加上双向绑定,让view层和model层完全解耦,让我感到安卓开发原来也可以如此利落。当然,也遇到了不少问题,面临的第一个问题就是网上资料实在太少了,大部分博客只是一个简单的demo介绍,对于在实际项目中应用,自己还有太多的坑要填,我把自己在项目中自己遇到的问题总结在此,供大家参考。
资料分享:
mvvm架构介绍——美团技术团队 https://tech.meituan.com/android_mvvm.html, 美团这篇文章写的比较新,可以说是作为我项目开发的指导思想,对mvvm的概念模糊了就重读一遍此文。架构总的来说就是围绕开发和维护,如何更好的模块划分和功能解耦。
完全掌握Android Data Binding 15年写, [http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0603/2992.html] Android Data Binding
(数据绑定)用户指南 http://www.jianshu.com/p/b1df61a4df77
Android DataBinding原理解析 http://blog.csdn.net/haizishiwo/article/details/51175145
官方文档 https://developer.android.com/topic/libraries/data-binding/index.html#listener_bindings
github上的一个开源项目(非mvvm架构,但用了databinding)https://github.com/youlookwhat/CloudReader
github开源项目(三种架构的demo)git@github.com:ivacf/archi.git,对mvvm初期的使用都是参考这个项目,包括在xml文件直接绑定viewModel的成员变量、监听方法,以及databing结合RecycleView的使用,但没有涉及双向绑定的使用。
遇到的问题:
1. databinding实现原理
想要更好的使用mvvm架构开发项目,首先要做的就是理解mvvm的架构思想和databinding的实现原理。思想可以多参考美团那篇文章。这里对databinding的原理做简单介绍,欢迎指正!
databinding框架给我们生成了一个Binding类,类名为xml文件名换成头峰命名再加上Binding,这个类保存了xml中定义的每个组件的引用和ViewModel的引用,通过对观察者模式对ViewModel的成员变量进行监听,当变量值发生改变时,binding马上更新UI,从而免去了手动初始化组件和更新UI。