最近项目过渡到MVVM架构,记录下实践中使用到的一些组件和注意事项。
概览
下图来自 官方文档 中的架构指南,显示了模块间的交互:
Lifecycles
作用:管理 Activity 和 Fragment 的生命周期
LiveData
作用:在底层数据库更改时通知视图
配合ViewModel一起使用,存在于ViewModel中
LiveData 是一个可观测数据的容器类,与普通的可观测类不同,LiveData 能感知生命周期,并且只会在这些可观测的应用组件处于活动状态的时候才会更新它们,而且还会在与其关联的生命周期被销毁后自动清理自己。这样一来也就不会出现内存泄漏的问题了。
Room
作用:访问 SQLite 数据库
ViewModel / AndroidViewModel
作用: 用来管理数据,它同样具有感知生命周期的能力,在宿主没有被销毁之前,数据不会丢失,且ViewModel不会重新创建,比如旋转屏幕等。同时,ViewMedel将数据从Activity中抽离出去,耦合度更低,更加方便维护