美文网首页
LiveData+Room+ViewModel踩坑

LiveData+Room+ViewModel踩坑

作者: 懇_ | 来源:发表于2020-07-08 17:55 被阅读0次

Q1 ViewModel需要Context

使用AndroidViewModel,初始化与ViewModel有点不同

ViewModelProvider(this,ViewModelProvider.AndroidViewModelFactory.getInstance(application)).get(NoticeViewModel::class.java)

注意是ViewModelProvider.AndroidViewModelFactory而不是ViewModelProvider.NewInstanceFactory

Q2 LiveData与Room

要达到Room修改能实时刷新界面,必须得在同一个实例下进行操作

        val user1 = User(null,"大虎")
        val user2 = User(null,"二郎")
        val user3 = User(null,"三师兄")
        GlobalScope.launch(Dispatchers.IO){
            userDao.addUser(user1,user2,user3)
            val all = userDao.getAll()
            withContext(Dispatchers.Main){
                all.observe(this@MainActivity, Observer {
                    it.forEach { user-> Log.d(TAG, "LiveData+Room: id = ${user.id} name = ${user.name}") }
                })
                Log.d(TAG, "onCreate: 1111111111111111")
            }
            delay(2000)
            Log.d(TAG, "onCreate: 分割线--------------------------------")
            userDao.addUser(User(null,"我是验证LiveData的"))
            delay(2000)
            Log.d(TAG, "onCreate: 分割线--------------------------------")
            userDao1.delUser()
            delay(2000)
            Log.d(TAG, "onCreate: 分割线--------------------------------")
            userDao2.updateUser(User(1,"李四"))
          }

2020-07-08 16:28:57.236 13991-13991/com.liuzhi.myapp D/MainActivity: LiveData+Room: id = 1 name = 大虎
2020-07-08 16:28:57.236 13991-13991/com.liuzhi.myapp D/MainActivity: LiveData+Room: id = 2 name = 二郎
2020-07-08 16:28:57.236 13991-13991/com.liuzhi.myapp D/MainActivity: LiveData+Room: id = 3 name = 三师兄
2020-07-08 16:28:59.227 13991-14059/com.liuzhi.myapp D/MainActivity: onCreate: 分割线--------------------------------
2020-07-08 16:28:59.251 13991-13991/com.liuzhi.myapp D/MainActivity: LiveData+Room: id = 1 name = 大虎
2020-07-08 16:28:59.251 13991-13991/com.liuzhi.myapp D/MainActivity: LiveData+Room: id = 2 name = 二郎
2020-07-08 16:28:59.251 13991-13991/com.liuzhi.myapp D/MainActivity: LiveData+Room: id = 3 name = 三师兄
2020-07-08 16:28:59.251 13991-13991/com.liuzhi.myapp D/MainActivity: LiveData+Room: id = 4 name = 我是验证LiveData的
2020-07-08 16:29:01.231 13991-14164/com.liuzhi.myapp D/MainActivity: onCreate: 分割线--------------------------------
2020-07-08 16:29:03.258 13991-14164/com.liuzhi.myapp D/MainActivity: onCreate: 分割线--------------------------------

Q3 Room的数据库连接实例创建

自己在网上搜Kotlin实例创建方法,发现各种高深,完全看不懂,特别是by lazy这种(自己学艺不精),最后只能用Studio自带的Java to Kotlin 转换插件,发现代码差不多

companion object{
        private var databaseInstance : RoomDatabase? = null
        fun getDatabase(application: Application) : RoomDatabase?{
            if(databaseInstance == null){
                synchronized(RoomDatabase::class.java){
                    if(databaseInstance == null){
                        databaseInstance = Room.databaseBuilder(
                            application,
                            RoomDatabase::class.java,
                            "database.db"
                        ).build()
                    }
                }
            }
            return databaseInstance
        }

相关文章

  • LiveData+Room+ViewModel踩坑

    Q1 ViewModel需要Context 使用AndroidViewModel,初始化与ViewModel有点不...

  • JavaScrip-StepPitGuide《JavaScrip

    《JavaScript踩坑指南》JavaScrip-StepPitGuide? 《JavaScript踩坑指南》 ...

  • 算法踩坑6-二叉搜索树排序

    背景 接上面五篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 ...

  • 算法踩坑5-归并排序

    背景 接上面四篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 来...

  • D1094:踩坑的价值最大化

    是人就会踩坑,不踩坑理论上就不属于人类,踩坑是人之常情,能回头站在坑边反思,才是对踩过的的坑价值最大化的体现,要不...

  • 交互设计师所要避免的几个坑

    前言 工作中难免会踩到几个坑,即使现在不踩以后还会踩,只有踩过才会深刻记住,踩过说明爱过!但是踩过的坑必须把坑填满...

  • 踩坑,使用cocoaPods import导入时没有提示的解决办

    续上篇写的,踩坑,cocoaPods ---- framework not found Pods之后 ,又踩坑了。...

  • 2020-10-19随笔 踩坑0传值

    踩坑:当值传入0时,if条件判断时候会自己转换,记录踩坑。

  • 随笔

    读书啊,就是一个坑踩完了又掉进另一个坑,先说踩读书没用的坑,爬出来了,再踩读书要多的坑,之后再踩读书要精啊,读书要...

  • PHP中的数据类型

    一说到数据类型,这个坑就太多了,多到有哪些坑,有多少坑,不知道自己还会踩哪些坑,以及踩过的坑还会不会再踩,我对...

网友评论

      本文标题:LiveData+Room+ViewModel踩坑

      本文链接:https://www.haomeiwen.com/subject/mgaccktx.html