Jetpack系列 Room+ViewModel

本文介绍如何结合使用ViewModel和Room来管理Android应用中的数据。文章详细解释了ViewModel的作用及其实现步骤,并演示了如何在ViewModel中操作Room数据库,包括查询、插入、更新和删除数据等常见操作。


前言

在上一篇Room我们了解如何简单的使用Room数据库https://blog.youkuaiyun.com/csdn546229768/article/details/116569028点我跳转
那么这篇将使用Viewmode管理数据Activity层只负责处理view


一、ViewModel是什么?

  • ViewModel是一个类,负责准备和管理Activity或的数据Fragment。它还处理活动/片段与应用程序其余部分的通信(例如,调用业务逻辑类)。
  • ViewModel通常通过LiveData或Android数据绑定公开此信息。
  • ViewModel的唯一责任是管理UI的数据。它永远不应访问您的视图层次结构,也不应保留对活动或片段的引用。

二、使用步骤

(这里讲Room和ViewMode的结合使用所以不讲ViewMode的使用了)

1. 引入库

在上篇的代码基础上进行添加

    //viewModeScope
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"

2. 新建ViewMode类

  1. 首先集成AndroidViewModel–为什么是AndroidViewModel因为比ViewModel好用

  2. 将room数据库配置信息声明成域

    private val wordDatabase by lazy {
   
   
        Room.databaseBuilder(
            application,
            WordDataBases::class.java,
            "word_database.db"
        )
            .build()
    }           //配置Dabase信息

    private val wordDao by lazy {
   
    wordDatabase.getWordDao() }       //获取Dao层控制对象

3. 将room数据库配置信息声明成域


    fun getAllWords()  = wordDao.getAllWords()          //获取全部数据

     fun insertView(){
   
   
        viewModelScope.launch {
   
      //这里为什么没有换线程 ----因为我在insertWords这个方法声明了suspend函数
            wordDao.insertWords(Emp(null, "Hello", "你好"))
        }
    }

     fun clearView() {
   
   
         viewModelScope.launch {
   
   
            withContext(Dispatchers.Default) {
   
   
                wordDao.clearAll()
            }
        }
    }

     fun deleteView() {
   
   
         viewModelScope.launch {
   
   
            withContext(Dispatchers.Default) {
   
   
                wordDao.deleteWords(Emp(1, 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值