🔥 什么是 Room 与 LiveData?

  • Room 是 Android 的持久化库,基于 SQLite 提供更简洁的数据库操作方式
  • LiveData 是 Android 架构组件,用于封装数据并实现生命周期感知
  • 二者结合可实现数据自动更新持久化存储的完美协作

📚 核心概念与使用场景

  1. Room 的作用

    • 管理数据库表结构(如 @Entity, @Dao 注解)
    • 提供编译时检查的 SQL 查询(如 @Query
    • 支持异步操作(如 suspend 函数)
      Android_Room
  2. LiveData 的优势

    • 自动绑定到 UI 组件(如 LiveDataobserve
    • 避免内存泄漏(通过生命周期感知)
    • 支持数据观测与转换(如 map, switchMap
      LiveData_Example

🧩 实战步骤:Room + LiveData 流程

// 1. 定义数据表
@Entity(tableName = "user_table")
data class User(@PrimaryKey val id: Int, val name: String)

// 2. 创建 DAO 接口
@Dao
interface UserDao {
    @Query("SELECT * FROM user_table")
    fun getAllUsers(): LiveData<List<User>>
}

// 3. 配置 Room 数据库
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase()

// 4. 使用 LiveData 观测数据变化
viewModelScope.launch {
    val users = database.userDao().getAllUsers()
    users.observe(this, { list ->
        // 更新 UI
    })
}

🌐 扩展阅读

Room_LiveData_Architecture