上图是官方给出的架构模型,包含以下组件:
生命周期管理库 - Lifecycle
Lifecycle组件,为下面两个组件提供了生命周期感知的基础
LiveData组件,可观测的、可感知生命周期的数据
ViewModel组件,不依赖于View、提供UI数据、桥接持久层、业务逻辑
数据持久化库 - Room,Sqlite的ORM
事实上,Architecture Components实现了一个比较理想化的依赖方式,自上而下,单向依赖;VM层并不持有View层的任何引用,但却是生命周期感知的,在新版的AS中View也不用去实现某些接口或继承特定的类,AppCompatActivity已经帮你整合了这一切。
另外,关于Repository的解释,它并不是架构组件的成员,但是Google推荐引入Repository层,来作为我们唯一的数据来源接口,我们从图中也很好理解,他的职责就是使VM层对数据来源是无感知的,包装了数据来源,提供统一的API,供上层透明化的调用。
更多的关于Android Architecture Components的教程,欢迎关注我们后续的架构组件篇章。
五、一个MVVM的Demo下面我们通过设计App《每日美文》的Demo,并使用Architecture Components架构MVVM的方式去完成。
这个Demo使用Kotlin开发,没接触过Kotlin的童鞋也不必担心,本文没有用到Kotlin的一些高级特性,只需要Google花个半小时时间学习基本的Kotlin语法便可无障碍阅读
项目地址:https://github.com/xykjlcx/OneArticleDemo
1. 首先我们创建工程
项目创建完成后的目录结构
架构组件的相关依赖
// livedata viewmodel def lifecycle_version = "1.1.1" implementation "android.arch.lifecycle:extensions:$lifecycle_version" implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" implementation "android.arch.lifecycle:livedata:$lifecycle_version" implementation "android.arch.lifecycle:runtime:$lifecycle_version" annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version"