//ViewModelStoreOwner是个接口只有一个方法getViewModelStore,由Activity/Fragment实现(详见3.2.2) public ViewModelProvider(@NonNull ViewModelStoreOwner owner, @NonNull Factory factory) { this(owner.getViewModelStore(), factory); } //最终会调用的该构造方法,ViewModelStore封装了HashMap集合保存ViewModel对象 //...
不过现在可以借助另外一种简单的方式LiveData+ViewModel也可以实现这种共享 二、代码示例 示例描述:要求FragmentA发送出数据,FragmentB和Activity都能接收到。FragmentB发送出的数据FragmentA和Activity都能接收到。Activity发送出去的数据FragmentA和FragmentB都能接收到。 上代码: SharedDataActivity.kt用于承载两个Fragment以...
ViewModel 是一种 Android 架构组件,用于管理 UI 相关的数据,并处理与 UI 无关的业务逻辑。ViewModel 的生命周期与 Activity 或 Fragment 不同,它可以在配置更改(如屏幕旋转)时保持数据。 正确方法 以下是用 LiveData 和 Repository 设置 ViewModel 的正确方法: 创建Repository 代码语言:txt 复制 class MyRepository...
考虑下面这个场景:你正在观察 ViewModel 暴露出来的一个 LiveData,它包含了需要显示的列表项。那么 View 如何区分数据已经加载,网络错误和空集合? 你可以通过 ViewModel 暴露出一个LiveData<MyDataState>,MyDataState可以包含数据正在加载,已经加载完成,发生错误等信息。 你可以将数据包装在具有状态和其他元数据(如错误消...
一般来说我们会在 ViewModel 中创建 Livedata 对象,保证app配置变更时,数据不会丢失,然后再 Activity/Fragment 的 onCreate 中注册 Livedata 监听(因为在 onStart 和 onResume 中进行监听可能会有冗余调用) 基础使用流程: 1.创建一个实例LiveData来保存某种类型的数据。一般在你创建的ViewModel类中完成 ...
在ViewModel 中创建一个 MutableLiveData,用于存放和更新数据。 // 代码已经在上面的步骤1中展示 1. 3. 在 Activity 中观察 LiveData 在Activity 中,我们将观察 ViewModel 中的 LiveData,并在数据变化时更新 UI。 // MainActivity.javaimportandroid.os.Bundle;importandroid.widget.TextView;importandroidx.appcompat...
这里我打算详细讨论下Architecture Components里面的Lifecycle、ViewModel和LiveData这3个部分。先看一下这三者的类和相关类的关系图: 粗一看有些复杂,接下来会详细分析下各个部分负责的内容。 2、Lifecycle 根据官方文档,Lifecycle是一个抽象类,一个有Android生命周期的对象附在它上面, 并且它持该对象的当前生命周期所处...
public LiveData<List<Game>> getGameList() { return mGameList; } 现在的问题是因为这是一个API调用,mGameList的初始值将为空,直到call.enqueue返回一个值。这将导致空指针异常 popViewModel.getGameList().observe(this, new Observer<List<Game>>() { ...
由于之前提及到ViewModel实际是单例模式的,且生命周期与Activity独立,所以可以使用ViewModel进行Activity和Fragment之间或Fragment之间的数据共享 LiveData 上述ViewModel只是提供了个数据仓库,如果我们使用传统的对象是无法实现MVVM架构的,这个时候就得使用LiveData LiveData即相当于给数据加多一层包装,让数据可以被观察 由于LiveDa...
简介:【4月更文挑战第19天】在构建响应式的Android应用程序时,LiveData和ViewModel是两个核心组件。它们不仅提供了数据持有和界面更新的机制,还促进了组件间的解耦。本文将深入探讨如何通过结合LiveData和ViewModel来优化应用架构,提升用户体验,并确保数据的一致性和生存期管理。我们将透过实际案例分析,揭示这些技术如何协同...