MVVM 最完整架构解析及 Jetpack 架构组件的使用

MVVM 架构图

谈到 MVVM 架构,不得不祭出官方的架构图,架构图能帮助我们更好地理解,如下所示:
MVVM 最完整架构解析及 Jetpack 架构组件的使用
MVVM 和 MVP 的区别
MVP 中 V 层和 P 层互相持有对方的引用,在V 层调用 P 层逻辑后,P 层回调V 层的相应方法更新 UI。

而在 MVVM 中,上层只依赖直接下层,不能跨层持有引用,那 View 层调用 ViewModel 处理数据后,又如何更新自己呢?

答案就在 ViewModel 中的 LiveData,这是一种可观察的数据类型,在 View 层中观察者 Observer 对需要的数据进行订阅,当数据发生变化后,观察者 Observer 的回调方法 onChanged() 中会收到新的数据,从而可以更新 UI。

Jetpack 架构组件

Jetpack 是 Google 为我们提供的架构组件,对于这些组件,我有以下理解和使用心得:

DataBinding
适用于数据繁杂的页面,可以减少大量 java 代码。xml 中可以做出类似于VUE 那样的数据双向绑定。同时可以直接调用控件id名称直接写UI逻辑代码不用写findviewById,也不用通过butterknife来注解实现findviewById的节省。
ViewModel
管理 Activity 或 Fragment 的数据
创建于Activity 或 Fragment 内,页面被销毁前,ViewModel 会一直存在
如果因配置变化导致页面销毁,ViewModel 不会销毁,它会被