MVVM架构与Jetpack
MVVM即Model-View-ViewModel的缩写,它的出现是为了将图形界面与业务逻辑、数据模型进行解耦。MVVM也是Google推崇的一种Android项目架构模型。而Jetpack组件,大部分是为了能更好的架构MVVM应用程序而设计的。
Jetpack组件
- Lifecycle:有了Lifecycle组件,当系统组件Activity、Fragment、Service和Application的生命周期发生变化时,自定义组件能够及时得到通知,使自定义组件与系统组件进一步解耦。
- Navigation:处理导航所需的一切,包括页面的跳转、参数的传递、动画效果的设置,以及App bar的设置等。
- ViewModel:负责处理和存放View与Model之间的业务逻辑,它直接对UI界面所需的数据负责,让视图和数据进行分离。并且ViewModel与生命周期相关,能自动处理由于屏幕旋转导致界面重新创建所带来的数据重新获取问题。
- LiveData:在MVVM架构的层与层之间扮演着桥梁的作用。当数据发生变化时,通过LiveData让数据的订阅者得到通知。
- Room:Google官方的ORM数据库,原生支持LiveData,在搭配LiveData使用时,当Room数据库中的数据发生变化时,LiveData使数据的订阅者能够及时得到通知,而无须从数据库重新获取数据。
- WorkManager:为应用程序中那些不需要及时完成的任务提供统一的解决方案。
- DataBinding:进一步解耦UI界面。DataBinding的出现让findViewById不复存在,使布局文件能够承担更多的工作,甚至能承担一些简单的业务逻辑。
- Paging:为常见的3种分页机制提供了统一的解决方案。
天气App实战
天气数据来自聚合数据,免费使用,可以自己申请账号,替换其中的key。
目录结构
- api:负责网络数据的获取
- db:负责数据库存储
- model:天气、城市数据model
- repository:根据需求从api或db获取数据
- viewmodel:数据逻辑处理,天气、城市的LiveData
- view:天气、城市显示界面
下载地址:使用Jetpack实现MVVM架构的天气App