首页
学习
活动
专区
圈层
工具
发布

【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

; 在 ViewModel 中使用了 LiveData 后 , 先调用 LiveData#observe 函数 为 LiveData 设置 androidx.lifecycle.Observer 监听器...使用要点 在 Activity 组件中 , 通过调用 ViewModel 视图模型获取 数据库中的数据 , ViewModel 调用 Repository 层的增删改查方法 , Repository...调用 Room 框架的相关方法操作 SQLite 数据库 ; 首先 , 获取 ViewModel 视图模型 ; // 获取 ViewModel 视图模型对象 var viewModel...}) 最后 , 通过调用 ViewModel 中定义的 数据库操作 方法 , 修改数据库中的数据 , 如果数据库中的数据发生了改变 , 就会自动回调 Observer#onChanged 方法 ; thread...viewModel.query().observe(this, object: Observer> { override fun onChanged(

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android Jetpack系列 之LiveData

    ,但是后患无穷,并且View和ViewModel之前只能是单项的,即只能View层持有ViewModel,那么如何优雅的实现找那个需求呢?...public Main3ActivityViewModel(int count) { this.mCount.setValue(count); } } 这样的话 我们在WorkUtil中调用...add方法 就可以改变mCount的值了,最后我们在注册回到的onChanged方法中去给Textview赋值就可以了,我们运行程序结果如下: ?...嚯嚯,pia pia 打脸 这里报错的原因是因为我们的计数demo是运行在子线程中的,而LiveData的setValue方法只能在主线程中调用,如果想要在子线程中调动只能使用postValue方法,我们将赋值方法改为...在实际项目开发中我们使用switchMap的频率还是很高的,毕竟 只要LiveData对象是调用其他方法获取的 ,我们就可以这样做, 在点击事件中我们设置了可观察数据:分数,当分数改变的时候,就会执行switchMap

    1.2K20

    【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

    ViewModelProvider.AndroidViewModelFactory 函数 获取 ; 调用 ViewModelProvider#get 函数 , 获取自定义 ViewModel 类 ;..., 可以将 运行过程中 ViewModel 中的 Model 模型数据改变 通知 视图 View , 令视图组件显示最新的数据内容 ; 在 ViewModel 中使用了 LiveData 后 , 必须调用...androidx.lifecycle.Observer 监听器 , 当数据发生改变时 , 就会 回调 监听器中的 androidx.lifecycle.Observer#onChanged 回调函数 ;...)}" 为 Button 组件设置点击事件时 , 如果要 调用配置的 ViewModel 对象的函数 , 需要使用 ()->对象.函数() 的形式进行调用 , 如下示例 : android:onClick...实例对象 , 先获取 ViewModel 实例 , 然后设置给 DataBinding 布局 ; 设置 LiveData 观察者 , 在 ViewDataBinding 类中 , 可以直接调用 调用的

    1.9K21

    LiveData三问—阿里真题

    主要思想就是用到了观察者模式思想,让观察者和被观察者解耦,同时还能感知到数据的变化,所以一般被用到ViewModel中,ViewModel负责触发数据的更新,更新会通知到LiveData,然后LiveData...自动判断生命周期并回调方法 如果观察者的生命周期处于 STARTED 或 RESUMED状态,则 LiveData 会认为该观察者处于活跃状态,就会调用onActive方法,否则,如果 LiveData...对象没有任何活跃观察者时,会调用 onInactive()方法。...回调方法,也就是onChanged方法。通过改变存储值,来通知到观察者也就是调用onChanged方法。...否则正常通知到观察者的onChanged方法。 当然,如果想任何时候都能监听到,都能获取回调,调用observeForever方法即可。

    54130

    Android从零开始搭建MVVM架构(4)——LiveData

    这通常在ViewModel类中完成。 2.创建一个定义了onChanged()方法的Observer对象,当LiveData对象保存的数据发生变化时,onChanged()方法可以进行相应的处理。...mModel.getCurrentName().observe(this, nameObserver); } } 传递nameObserver作为参数,调用observe()之后,将立即回调onChanged...如果LiveData对象mCurrentName的值并未设置,则不调用onChanged()。 更新LiveData对象 LiveData没有公用的方法来更新存储的数据。...setValue(T)会导致Observer使用值"John Doe"调用onChanged()方法。...由于转换是延迟计算的,所以与生命周期相关的行为隐式传递,而不需要额外的显式调用或依赖关系。 如果您认为在ViewModel对象中需要Lifecycle对象,则转换可能是更好的解决方案。

    2.6K30
    领券