一般来说我们会在 ViewModel 中创建 Livedata 对象,保证app配置变更时,数据不会丢失,然后再 Activity/Fragment 的 onCreate 中注册 Livedata 监听(因为在 onStart 和 onResume 中进行监听可能会有冗余调用) 基础使用流程: 1.创建一个实例LiveData来保存某种类型的数据。一般在你创建的ViewModel类中完成 classMainViewMo...
myViewModel = ViewModelProvider(this,ViewModelProvider.AndroidViewModelFactory(application)).get(MyViewModel::class.java) 可以看到TextView设置的数值即为路径 进阶用法 由于之前提及到ViewModel实际是单例模式的,且生命周期与Activity独立,所以可以使用ViewModel进行Activity和Fragment之间或Fragment之间的数据共享 LiveData ...
//ViewModelStoreOwner是个接口只有一个方法getViewModelStore,由Activity/Fragment实现(详见3.2.2) public ViewModelProvider(@NonNull ViewModelStoreOwner owner, @NonNull Factory factory) { this(owner.getViewModelStore(), factory); } //最终会调用的该构造方法,ViewModelStore封装了HashMap集合保存ViewModel对象 //...
/*** 订阅 ViewModel,mycount是一个LiveData类型 可以观察* */viewModel.mycount.observe(this@MainActivity){countTv.text=viewModel.mycount.value.toString()}// LiveData onchange会自动感应生命周期 不需要手动// viewModel.mycount.observe(this, object : Observer<Int> {// override fun onChanged(t: Int?
viewModel.data.observe(this, Observer { myData -> // Update UI with myData }) viewModel.fetchData() } } 优势 生命周期感知:LiveData 可以感知 Activity 或 Fragment 的生命周期,只在活跃状态下更新 UI,避免内存泄漏和不必要的更新。 解耦:Repository 模式将数据操作逻辑与 UI 层分离,使代码更清晰、...
二、LiveData和ViewModel的使用 首先我们创建UserViewModel类并实现ViewModel接口。创建userDtoLiveData成员变量,也就是我们需要观察的数据。userDtoLiveData的数据的变化我们将会显示在UI上。 packagecom.jilian.androidarchitecture;importandroid.arch.lifecycle.LiveData;importandroid.arch.lifecycle.MutableLiveData;importandroid....
同时也出现了ViewModel这个组件,配合LiveData,更方便的实现MVVM模式中Model与View的分离。那么就让本文来带大家来学习LiveData与ViewModel的使用吧。 LiveData和ViewModel的关系: 本文的案例代码:<https://github.com/taxze6/Jetpack_learn/tree/main/Jetpack_basic_learn/livedata_viewmodel>...
LiveData和viewModel是Google大佬新推出的开发框架jetpack中的两个组件,对应的是MVVM开发模式。本身来说LiveData和viewModel这两个东西之前也有个人的实现,只不过现在谷歌把这俩组件官方化了,消除差异。(Google教我写代码) 概念这些网上一搜一大把的,这里只是入门一下这两个东西,把最基本的使用说一说,毕竟东西要会用了...
传统的Activity与Fragment之间共享数据,Fragment与Fragment之间共享数据,我一般会采用EventBus事件总线来实现。不过现在可以借助另外一种简单的方式LiveData+ViewModel也可以实现这种共享 二、代码示例 示例描述:要求FragmentA发送出数据,FragmentB和Activity都能接收到。FragmentB发送出的数据FragmentA和Activity都能接收到。Activi...
2. 另外,MVVM 和 AndroidX 的 ViewModel 没什么关系,所以我们不用想办法把 ViewModel 往 MVVM 去靠,也不用担心自己不懂 MVVM 会不用用不好 ViewModel。 把MVVM 这个概念撇开了,ViewModel 的使用就比较简单了。那么我们进入下一步:LiveData。 6 LiveData ...