编写一个MVVM架构

先介绍 一个东西就是Jetpack ,介绍可能会比较简单,在文章最后会附上架构Demo

借助Jetpack,搭建一个MVVM架构。Jetpack主要分为4个部分,基础、架构、行为、界面。这里面很多东西都是我们平时经常使用的,像AppCompat、通知、权限,甚至连Fragment都属于Jetpack。由此,可以看出Jetpack不是新东西,在能够帮助开发者更好更方便地构建应用程序的组件,Google都将其归纳入了Jetpack。

看下图:

 

在Jetpack有这么多的组件,有哪些是我们MVVM架构需要的的组件,数据绑定、Lifecycles、LiveData、Room、ViewModel,这些都是重要的组件,但是不一定全都都要用上,可以选择自己需要的组件进行使用,

架构的目录列表

这个demo主要是以一个酷欧天气Jetpack版来展示架构。

给出一张酷欧天气Jetpack版的架构设计图,拥有良好架构设计的项目都是可以用简洁清晰的架构图表示出来

以前图中

1、绿色部分表示的是UI控制层,就是我们平时写的Activity和Fragment。

2、蓝色部分表示的是ViewModel层,ViewModel用于持有和UI元素相关的数据,以保证这些数据在屏幕旋转时不会丢失,以及负责和仓库之间进行通讯。

3、黄色部分表示的是仓库层,仓库层要做的工作是自主判断接口请求的数据应该是从数据库中读取还是从网络中获取,并将数据返回给调用方。

4、灰色部分表示是的本地数据层,实现方式并不固定,我使用了LitePal来进行数据持久化处理,你也可以使用别的框架。

5、红色部分表示的是网络数据层,这里使用了Retrofit从web服务接口获取数据。

6、图中所有的箭头都是单向的,比方说WeatherActivity指向了WeatherViewModel,表示WeatherActivity持有WeatherViewModel的引用,但是反过来WeatherViewModel不能持有WeatherActivity的引用。其他的几层也是一样的道理,一个箭头就表示持有一个引用

主要介绍就是这些了,具体学习源码可以下载Demo

此文章学习于郭大神

Demo下载:

CSDN: 下载

百度网盘:下载    提取码:j7nf