# 酷欧天气Jetpack版
酷欧天气的Jetpack版本实现,采用了MVVM架构。
这里我先给出一张酷欧天气Jetpack版的架构设计图,这张图是模仿Google Codelabs的Sunshine项目画出来的。拥有良好架构设计的项目都是可以用简洁清晰的架构图表示出来的,而一个杂乱无章没有架构设计的项目则很难用架构图表示出来。
<img src="https://raw.githubusercontent.com/guolindev/coolweatherjetpack/master/images/architecture.jpg" width="750" />
上述架构图可能一开始看你会找不着重点,其实这张架构图非常清晰,我来带大家解读一下。
首先我们通过这张架构图成功将程序分为了若干层。
绿色部分表示的是UI控制层,这部分就是我们平时写的Activity和Fragment。
蓝色部分表示的是ViewModel层,ViewModel用于持有和UI元素相关的数据,以保证这些数据在屏幕旋转时不会丢失,以及负责和仓库之间进行通讯。
黄色部分表示的是仓库层,仓库层要做的工作是自主判断接口请求的数据应该是从数据库中读取还是从网络中获取,并将数据返回给调用方。如果是从网络中获取的话还要将这些数据存入到数据库当中,以避免下次重复从网络中获取。简而言之,仓库的工作就是在本地和网络数据之间做一个分配和调度的工作,调用方不管你的数据是从何而来的,我只是要从你仓库这里获取数据而已,而仓库则要自主分配如何更好更快地将数据提供给调用方。
接下来灰色部分表示是的本地数据层,实现方式并不固定,我使用了<a href="https://github.com/LitePalFramework/LitePal" target="_blank">LitePal</a>来进行数据持久化处理,你也可以使用别的框架。
最后红色部分表示的是网络数据层,这里使用了Retrofit从web服务接口获取数据。
借助这张架构图,我想会在很大程度上便于大家理解酷欧天气Jetpack版这个开源项目,而如果你自己编写的项目也能尝试画出这样一张架构图,那么你的代码结构一定是非常不错的。
另外对于这张架构图我还有必要再解释一下,图中所有的箭头都是单向的,比方说WeatherActivity指向了WeatherViewModel,表示WeatherActivity持有WeatherViewModel的引用,但是反过来WeatherViewModel不能持有WeatherActivity的引用。其他的几层也是一样的道理,一个箭头就表示持有一个引用。
还有,引用不能跨层持有,就比方说UI控制层不能持有仓库层的引用,每一层的组件都只能和它的相邻层交互。
大概就介绍这么多吧,剩下的就靠大家自己去阅读源码进行学习了。
项目运行截图如下:
<img src="https://raw.githubusercontent.com/guolindev/coolweatherjetpack/master/images/Screenshot_1.png" width="250" /> <img src="https://raw.githubusercontent.com/guolindev/coolweatherjetpack/master/images/Screenshot_2.png" width="250" />
最后,希望这个项目能够帮助大家更好地学习Jetpack,更好地学习MVVM架构。
学习更多的Android技术知识,请关注我的微信公众号:
<img src="https://raw.githubusercontent.com/guolindev/booksource/master/qrcode.jpg" width="250" />
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
酷欧天气Jetpack版 酷欧天气的Jetpack版本实现,采用了MVVM架构。 这里我先给出一张酷欧天气Jetpack版的架构设计图,这张图是模仿Google Codelabs的Sunshine项目画出来的。拥有良好架构设计的项目都是可以用简洁清晰的架构图表示出来的,而一个杂乱无章没有架构设计的项目则很难用架构图表示出来。 上述架构图可能一开始看你会找不着重点,其实这张架构图非常清晰,我来带大家解读一下。 首先我们通过这张架构图成功将程序分为了若干层。 绿色部分表示的是UI控制层,这部分就是我们平时写的Activity和Fragment。 蓝色部分表示的是ViewModel层,ViewModel用于持有和UI元素相关的数据,以保证这些数据在屏幕旋转时不会丢失,以及负责和仓库之间进行通讯。 黄色部分表示的是仓库层,仓库层要做的工作是自主判断接口请求的数据应该是从数据库中读取还是从网络中获取
资源详情
资源评论
资源推荐
收起资源包目录
coolweatherjetpack-master.zip (77个子文件)
coolweatherjetpack-master
.gitignore 1009B
app
.gitignore 7B
build.gradle 2KB
src
androidTest
java
com
coolweather
coolweatherjetpack
ExampleInstrumentedTest.kt 656B
main
AndroidManifest.xml 1KB
res
mipmap-xhdpi
logo.png 42KB
mipmap-mdpi
logo.png 42KB
layout
simple_item.xml 892B
now.xml 1KB
choose_area.xml 2KB
suggestion.xml 2KB
activity_weather.xml 3KB
activity_main.xml 244B
forecast.xml 1KB
forecast_item.xml 2KB
title.xml 2KB
aqi.xml 4KB
mipmap-xxhdpi
logo.png 42KB
drawable
ic_launcher_background.xml 5KB
xml
network_security_config.xml 252B
drawable-v24
ic_launcher_foreground.xml 2KB
mipmap-hdpi
logo.png 42KB
mipmap-xxxhdpi
logo.png 42KB
drawable-xxhdpi
ic_home.png 310B
ic_back.png 191B
values
strings.xml 81B
colors.xml 208B
styles.xml 381B
assets
litepal.xml 399B
java
com
coolweather
coolweatherjetpack
data
Resource.kt 1KB
model
weather
Forecast.kt 447B
Basic.kt 398B
Weather.kt 357B
AQI.kt 184B
Now.kt 356B
Suggestion.kt 542B
HeWeather.kt 207B
place
City.kt 322B
Province.kt 310B
County.kt 333B
WeatherRepository.kt 2KB
db
CoolWeatherDatabase.kt 449B
PlaceDao.kt 1KB
WeatherDao.kt 1KB
network
api
PlaceService.kt 711B
WeatherService.kt 396B
ServiceCreator.kt 715B
CoolWeatherNetwork.kt 2KB
PlaceRepository.kt 2KB
ui
MainViewModel.kt 288B
area
ChooseAreaFragment.kt 4KB
ChooseAreaModelFactory.kt 469B
ChooseAreaViewModel.kt 3KB
ChooseAreaAdapter.kt 985B
MainActivity.kt 1KB
weather
WeatherModelFactory.kt 470B
WeatherViewModel.kt 2KB
WeatherActivity.kt 2KB
MainModelFactory.kt 456B
util
InjectorUtil.kt 1KB
BindingAdapters.kt 1KB
CoolWeatherExecutors.kt 556B
CoolWeatherApplication.kt 449B
test
java
com
coolweather
coolweatherjetpack
ExampleUnitTest.kt 359B
proguard-rules.pro 751B
images
architecture.jpg 172KB
Screenshot_1.png 468KB
Screenshot_2.png 47KB
settings.gradle 15B
build.gradle 644B
gradlew 5KB
LICENSE 11KB
README.md 3KB
gradlew.bat 2KB
gradle.properties 870B
gradle
wrapper
gradle-wrapper.properties 232B
gradle-wrapper.jar 53KB
共 77 条
- 1
管墨迪
- 粉丝: 26
- 资源: 4665
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【小程序毕业设计】学习资料销售平台源码(完整前后端+mysql+说明文档+LW).zip
- 高分毕业设计-基于Java实现宠物医院管理系统(带微信小程序)+项目源码+文档说明
- 【小程序毕业设计】新生自助报到系统源码(完整前后端+mysql+说明文档+LW).zip
- 【小程序毕业设计】校园商铺系统源码(完整前后端+mysql+说明文档+LW).zip
- 【小程序毕业设计】西餐外卖系统的设计与实现NodeJS源码(完整前后端+mysql+说明文档).zip
- 【小程序毕业设计】书籍销售系统源码(完整前后端+mysql+说明文档+LW).zip
- 基于大数据的智慧交通拥堵预测与大屏可视化
- 直播间自动评论软件直播间自动发言工具直播间自动评论脚本短视频自动回复短视频自动评论直播间自动喊话神器直播间自动评论点赞
- 设计模式精华版.pdf
- 时间序列-原木-1分钟数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0