一般来说我们会在 ViewModel 中创建 Livedata 对象,保证app配置变更时,数据不会丢失,然后再 Activity/Fragment 的 onCreate 中注册 Livedata 监听(因为在 onStart 和 onResume 中进行监听可能会有冗余调用) 基础使用流程: 1.创建一个实例LiveData来保存某种类型的数据。一般在你创建的ViewModel类中完成 classMainViewMo...
//ViewModelStoreOwner是个接口只有一个方法getViewModelStore,由Activity/Fragment实现(详见3.2.2) public ViewModelProvider(@NonNull ViewModelStoreOwner owner, @NonNull Factory factory) { this(owner.getViewModelStore(), factory); } //最终会调用的该构造方法,ViewModelStore封装了HashMap集合保存ViewModel对象 //...
myViewModel = ViewModelProvider(this,ViewModelProvider.AndroidViewModelFactory(application)).get(MyViewModel::class.java) 可以看到TextView设置的数值即为路径 进阶用法 由于之前提及到ViewModel实际是单例模式的,且生命周期与Activity独立,所以可以使用ViewModel进行Activity和Fragment之间或Fragment之间的数据共享 LiveData ...
ViewModel 绝对不要引用任何携带Context(包括Lifecycle也是携带有Activity)的对象; 正如上面所说, ViewModel命长, 对Context的引用可能会造成内存泄露, 如果确要使用Context可以试试AndroidViewModel, 因为AndroidViewModel默认携带了一个Application。 什么是LiveData? LiveData的英文直译:具有生命的数据, 它是可观察的数据存储...
在ViewModel 和 View 中通信的建议方式是观察者模式,使用 LiveData 或者其他类库中的可观察对象。 观察者模式 在Android 中设计表示层的一种非常方便的方法是让 View 观察和订阅 ViewModel(中的变化)。 由于ViewModel 并不知道 Android 的任何东西,所以它也不知道 Android 是如何频繁的杀死 View 的。
近年来,随着Jetpack组件的推广,LiveData和ViewModel成为了开发者们提升应用响应性和稳定性的有力工具。本文将深入探讨这两项技术的核心原理、实现细节及其在实际项目中的协同运用,旨在为读者提供一份清晰、实操性强的技术指南,帮助开发者构建出既符合现代用户体验又具备高效数据管理的Android应用。
一般来说我们会在 ViewModel 中创建 Livedata 对象,保证app配置变更时,数据不会丢失,然后再 Activity/Fragment 的 onCreate 中注册 Livedata 监听(因为在 onStart 和 onResume 中进行监听可能会有冗余调用) 基础使用流程: 1.创建一个实例LiveData来保存某种类型的数据。一般在你创建的ViewModel类中完成 ...
一般来说我们会在 ViewModel 中创建 Livedata 对象,保证app配置变更时,数据不会丢失,然后再 Activity/Fragment 的 onCreate 中注册 Livedata 监听(因为在 onStart 和 onResume 中进行监听可能会有冗余调用) 基础使用流程: 1.创建一个实例LiveData来保存某种类型的数据。一般在你创建的ViewModel类中完成 ...
二、LiveData和ViewModel的使用 首先我们创建UserViewModel类并实现ViewModel接口。创建userDtoLiveData成员变量,也就是我们需要观察的数据。userDtoLiveData的数据的变化我们将会显示在UI上。 packagecom.jilian.androidarchitecture;importandroid.arch.lifecycle.LiveData;importandroid.arch.lifecycle.MutableLiveData;importandroid....
viewModel.data.observe(this, Observer { myData -> // Update UI with myData }) viewModel.fetchData() } } 优势 生命周期感知:LiveData 可以感知 Activity 或 Fragment 的生命周期,只在活跃状态下更新 UI,避免内存泄漏和不必要的更新。 解耦:Repository 模式将数据操作逻辑与 UI 层分离,使代码更清晰、...