Room能和LiveData很好的结合实现MVVM,Room可以利用LiveData的观察者模式,感知Lifecyle的状态,实现数据驱动UI,避免MVP模式下更新UI需要大量回调接口的繁琐。 下面整合Room、ViewModel、LiveData、ViewBinding,实现一个简单的MVVM示例项目。 1 引入依赖 引入ViewModel依赖: dependencies { def lifecycle_version = "2.4.1" // ...
Room能和LiveData很好的结合实现MVVM,Room可以利用LiveData的观察者模式,感知Lifecyle的状态,实现数据驱动UI,避免MVP模式下更新UI需要大量回调接口的繁琐。 下面整合Room、ViewModel、LiveData、ViewBinding,实现一个简单的MVVM示例项目。 1 引入依赖 引入ViewModel依赖: dependencies { def lifecycle_version = "2.4.1" // ...
ViewModel 视图模型层 :该层 不与 Room 和 Retrofit 直接交互 , 而是与 Repository 层 进行交互 ; 在 ViewModel 层引入 LiveData 监听数据变化 , 如果数据发生变化则在 LiveData 设置的 androidx.lifecycle.Observer 监听器回调中 更新 View 视图 ; View 视图层 :Activity / Fragment 负责视图显示的 系统组件 , ...
在Activity 组件中 , 通过调用 ViewModel 视图模型获取 数据库中的数据 , ViewModel 调用 Repository 层的增删改查方法 , Repository 调用 Room 框架的相关方法操作 SQLite 数据库 ; 首先, 获取ViewModel 视图模型 ; // 获取 ViewModel 视图模型对象 var viewModel: ViewModel = ViewModelProvider( this, AndroidViewMo...
(将Room与Android架构组件如LiveData和ViewModel结合使用) Room主要包含三个组件: Database:其中包含数据库持有者,并作为应用已保留的持久关系型数据的底层连接的主要接入点 Entity:用于表示数据库中的表 Dao:包含用于访问数据库的方法 其中三个组件的关系如下图所示 添加依赖 在应用或模块的 build.gradle 文件中添加所...
LiveData通常结合ViewModel一起使用。我们知道ViewModel是用来存放数据的,因此我们可以将数据库放在ViewModel中进行实例化。但数据库在实例化的时候需要Context,而ViewModel不能传入任何带有Context引用的对象,所以,我们不能直接使用ViewModel,而应该用它的子类AndroidViewModel,它可以接受Application作为参数,而这个Application刚好可...
这篇文章是对上篇文章的优化。增加两个类,一个ViewModel管理界面数据,一个仓库类存放类。 1、Room本身支持LiveData,使用LiveData,我们就可以不用每次对页面进行刷新操作(自己写的页面刷新函数 )。我们可以用observe来观察它是否发生改变,如果改变则进行页面改变。 2
完成这个Demo后,你会发现,整个架构体系思想和设计非常优美的! 层层封装、接口隔离的思想,职责单一的设计原则! 样例采用自底向上的构建方式: (1) Room(SQL TABLE / DAO/RoomDatabase) (2) 存储库Repository (3) ViewModel/LiveData (4) Activity一. 基础介绍...
ViewModel 摘要 本文将深入探讨Android架构组件的应用实践,特别是Room数据库、ViewModel与LiveData这三个核心组件的集成使用。通过这些组件的有效结合,开发者能够构建出更为健壮且易于维护的Android应用程序。 关键词 Android架构, Room数据库, ViewModel, LiveData, 应用实践 ...
ViewModel中使用`Transformations.map`或`Transformations.switchMap`等扩展函数来处理数据转换,确保数据状态的更新符合UI需求。由于数据库操作可能涉及耗时操作,协程用于实现异步操作,确保UI线程的流畅性。当数据库中的数据发生变动时,LiveData会自动通知观察者,使得UI能够及时更新。ViewModel中的数据变更会触发...