Android Room+LiveData+ViewModel使用小结

一、简介

本文主要说明了如何组合使用Room、LiveData、ViewModel来进行数据的持久化存储

二、具体步骤

1. Room数据库的使用

Room主要包含三个组件:

  • Database:其中包含数据库持有者,并作为应用已保留的持久关系型数据的底层连接的主要接入点
  • Entity:用于表示数据库中的表
  • Dao:包含用于访问数据库的方法

其中三个组件的关系如下图所示(摘自Android开发者官网)

img

添加依赖

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

 dependencies {
   
     // Room数据库依赖
	def room_version = "2.2.6"

 	implementation "androidx.room:room-runtime:$room_version"
 	kapt "androidx.room:room-compiler:$room_version"
    
    // 协程依赖
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.0'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.0'
    
    //LiveData和ViewModel依赖 
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
 }
创建实体类
@Entity
data class Record(
	@PrimaryKey(autoGenerate = true)
    val id: Long = 0,
    val title: String,
	val content: String)

使用id作为主键,令其默认值为0,这样在插入数据库时会自动为其赋值

创建Dao接口
@Dao
interface RecordDao {
   

    @Query("select * from record where title = :title")
    fun getAllRecordsByTitle(title: String)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RoomLiveDataViewModel结合是为了实现数据持久化、数据观察与界面更新的最佳实践。 Room是Google为Android提供的一个持久化数据库解决方案,它简化了数据库操作并提供了编译时检查,同时支持在后台线程中进行数据库访问。LiveData是一种可观察的数据容器,它可以感知生命周期,并在数据变化时自动更新。ViewModel则负责管理界面相关的数据,并且与Activity或Fragment的生命周期无关,避免了数据丢失或重复请求的问题。 将RoomLiveData结合使用,可以将Room中的数据变化以LiveData的形式暴露出来。这样,在数据库发生变化时,LiveData会自动通知相关观察者进行界面更新。LiveData还具有自动清理机制,当观察者的生命周期结束时会自动停止数据的更新,避免了内存泄漏问题。 而结合ViewModel可以更好地管理界面相关的数据。ViewModel可以在配置改变时(如屏幕旋转)保留数据,并且避免了异步任务导致的内存泄漏。通过在ViewModel中缓存LiveData对象,可以在Activity或Fragment恢复时继续观察数据变化,并保持界面更新的一致性。 总结而言,RoomLiveDataViewModel的结合可以实现一个可靠、高效、响应式的数据处理框架,使得数据的持久化、观察与界面更新变得十分简单。这样的架构设计也有利于代码的维护与扩展,提高了开发效率与用户体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值