首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JAVA中弃用ViewModelProviders后如何实现ViewModelProvider

在JAVA中,弃用了ViewModelProviders类后,可以通过以下步骤来实现ViewModelProvider的功能:

  1. 首先,确保你的项目中已经引入了Android Architecture Components库。在build.gradle文件中添加以下依赖项:
代码语言:txt
复制
implementation "androidx.lifecycle:lifecycle-viewmodel:2.4.0"
  1. 创建一个自定义的ViewModelProvider类,用于提供ViewModel实例。可以按照以下方式实现:
代码语言:txt
复制
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;

public class CustomViewModelProvider {

    private ViewModelProvider.Factory factory;

    public CustomViewModelProvider(ViewModelProvider.Factory factory) {
        this.factory = factory;
    }

    public <T extends ViewModel> T get(Class<T> modelClass) {
        return new ViewModelProvider(this, factory).get(modelClass);
    }
}
  1. 在需要获取ViewModel实例的地方,使用自定义的ViewModelProvider类来获取ViewModel。例如:
代码语言:txt
复制
CustomViewModelProvider viewModelProvider = new CustomViewModelProvider(new ViewModelProvider.NewInstanceFactory());
MyViewModel myViewModel = viewModelProvider.get(MyViewModel.class);

这样,你就可以通过自定义的ViewModelProvider类来获取ViewModel实例了。

需要注意的是,以上示例中使用了ViewModelProvider.NewInstanceFactory()作为ViewModelProvider的工厂类。你也可以根据需要使用其他的工厂类,例如ViewModelProvider.AndroidViewModelFactory()。

关于ViewModel的更多信息,你可以参考腾讯云的文档:ViewModel

请注意,以上答案仅供参考,具体实现方式可能因项目配置和需求而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android Jetpack 组件之 ViewModel 详解

ViewModel 具有生命周期意识,会自动存储和管理 UI 相关的数据,即使设备配置发生变化数据还会存在,我们就不需要在 onSaveInstanceState 保存数据,在 onCreate 恢复数据了...开始,ViewModelProviders 主要提供四个静态方法获取对应的 ViewModelProvider,四个静态方法如下: public static ViewModelProvider of...那就来看一下 ViewModelProviderViewModelProvider 两个关键属性: private final Factory mFactory; private final ViewModelStore...,实际上像 FragmentActivity 、Fragment 等都间接或直接实现了这个接口,这一点和 LifecycleOwner 一样,源码参考如下: Activity 间接实现: ```java...如何简化 Fragment 之间的通信 Fragment 之间的通信以前是使用接口通过宿主 Activity 转发来实现的,现在可以使用同一 ViewModel 完成两个 Fragment 之间的通信,

1.2K10

Android Architecture Components Part4:ViewModel

这就实现了在Activity的ViewModel持久化特性。由于ViewModel是同一个,自然它里面的数据也是同一份。 得到ViewModel,剩下的就是对数据的操作与响应。...ViewModelProvider 到这里我想你心中可能会有如下几个疑问 ViewModel它是如何初始化的,对象是如何实例化的 如何向ViewModel传递初始化的参数 这两个疑问都将由ViewModelProvider...我们回到获取ViewModelProviderViewModelProviders.of()方法,进入源码查看。...AndroidViewModelFactory重新实现了create(),在重写的方法我们找到了我们想要的方法调用。...下面的能够初步体现使用AAC的App项目架构形态 ? 最后感谢大家对AAC架构系列的支持!如果感觉不错的话,可以帮忙点赞转发一下,谢谢!同时文章的代码都可以在Github获取到。

54920

浅谈ViewModel

5 源码分析 带着两个小问题简单的进行下源码分析: 1) ViewModel与Activity / Fragment的映射关系是如何建立起来的?...(以Activity为例) 第一部分:获取ViewModelProvider 调用ViewModelProviders.of(Activity); 一路调用,最终走到HolderFragmentManager.holderFragmentFor...如果HolderFragment尚未create,Activity就已经销毁,则从HashMap移除该Activity,防止泄露; HolderFragment成功创建,从HashMap移除该Activity...; 使用HolderFragment持有的ViewModelStore对象完成ViewModelProvider的创建; 第一部分的职责是构建 / 查找HolderFragment,对构建过程的异常做保护...整个映射逻辑也可以简化为:通过Activity类名找ViewModel实例; 2) ViewModel的生命周期如何管理?

2.6K90

Android从零开始搭建MVVM架构(3)——ViewModel

ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据,ViewModel数据会一直存活即使 activity configuration发生变化。...ViewModel 生命周期是贯穿整个 activity 生命周期,包括 Activity 因旋转造成的重创建,直到 Activity 真正意义上销毁才会结束。...1.实例化的代码 ViewModelProviders.of(activity,factory).get(MyViewModel.class) 1)首先是ViewModelProviders 的 of...activity 的了 ,重点看这里引出了一个 Factory,不带Factory的方法只是通过initializeFactoryIfNeeded初始化了一个sDefaultFactory(Factory的实现类...至此ViewModelProviders of 做了哪些事情呢: 1、初始化了ViewModelProvider内部维护了 用于创建 VM 的 Factory,和用户存放 VM 的ViewModelStore

67320

Jetpack 最新release版本升级 | 杂谈

configurations { all*.exclude group: 'androidx.lifecycle', module: 'lifecycle-extensions' } 或者你可以考虑下我的另外一种写法...你能对于gradle的一个重要的configuration有一个更深入的了解 ViewModelProviders被移除了 我们碰到的第二个问题就是在最新版本ViewModelProviders被移除了...这部分其实也还是比较简单的,因为我们上面剔除了旧的依赖,所以我们的项目内项目内其实已经没有了ViewModelProviders的代码了。...package androidx.lifecycle @Deprecated("ViewModelProviders adapter not support any more") object ViewModelProviders...这次在我们升级的过程,我们发现了有一部分仓库直接用了androidx.activity:activity-ktx和androidx.fragment:fragment-ktx。

1.3K10

ViewModel浅析

先写一个demo:通过ViewMOdel实现fragment之间的通信 布局: 【activity_main】 <?xml version="1.0" encoding="utf-8"?...因为很多通信其实都是通过底层存储来实现的 ViewModel大部分都用来实现MVVM模型,M层用来操作数据,V层负责展示界面,VM层用来逻辑处理。...下面我们来看源码: ViewModelProviders.of(getActivity()) of方法 @MainThread public static ViewModelProvider of(@NonNull...} } return mViewModelStore; } getViewModelStore()方法新建了一个ViewModelStore,ViewModelStore类很简单,底层的是...ViewModel基本都会跟LiveData结合使用,LiveData里面有个ObserverWrapper类,监听就是通过它实现 其实代码功能底层基本都是通过存储来实现的,无论是线程间通信还是进程间通信

45610

Jetpack:ViewModel

1.引入背景 引入ViewModel之前,存在如下几个问题: (1)有的时候一个Activity里面嵌套了多个fragment,但是这些fragment里面的是同一个数据,为了同步这些数据,我们需要用接口来传参...如果数据类型比较简单,同时数据量也不大,可以通过onSaveInstanceState()存储数据.但如果是大量数据,不方便序列化及反序列化,则上述方法将不适用. 2.ViewModel的使用 (1)gradle引入...class UserModel extends ViewModel { String name; int age; } (3)获取ViewModel UserModel model = ViewModelProviders.of...getViewModelStore(); } return holderFragmentFor(fragment).getViewModelStore(); } 如果实现了...ViewModelStoreOwner,就返回ViewModelStore,否则就新生成一个HolderFragment来获取ViewModelStore 那就进去看看HolderFragment如何实现

67120

Android LiveData 使用详解

在实际使用,用得比较多的是 MutableLiveData。他常常结合 ViewModel 一起使用。下面,让我们一起来看一下怎样使用它?...的 of 方法,他主要有四个方法,分别是 ViewModelProvider of(@NonNull Fragment fragment) ViewModelProvider of(@NonNull...如果传统的方式来实现,那么我们一般才采取观察者的方式来实现,这样,当我们需要观察数据的时候,我们需要添加 observer,在界面销毁的时候,我们需要移除 observer。...但是,如果我们 LiveData 来实现的话,它内部逻辑都帮我们封装好了,我们只需要保证 AccountLiveData 是单例的就ok,在需要观察的地方调用 observer 方法即可。...这里 AccountLiveData 的实现就不贴出来了,可以参考上面的 NetworkLiveData 实现 ---- 小结 这里说一点关于 LiveData 与 ViewModel 的应用场景吧,我尽量说得通俗一点

4.8K40

Java如何实现接口测试

关于接口测试, 我们之前介绍过很多方法了, 有postman, soapUI, Jmeter等, 他们各有优势和劣势, 今天和大家分享的是如何java TestNG来实现接口测试....看下我登录开发者工具: ? 接着在ide创建项目, 我们选择maven来创建项目 ? 是不是非常的简单, 一步步都是next下去即可, Intellij就会帮你把maven项目创建好....的httpclient, 它是一个客户端的http通讯实现库....3.使用了List 的实现类ArrayList来封装对象, ArrayList的优点是查询速度比较快. 右键java文件, 选择run 即可执行, 让我们来看下执行结果: ?...是否满足数据和测试业务分离, 断言是否充足, 代码是否可以重用, 怎么去管理N多个测试用例, 怎么降低代码耦合度, 怎么进行多线程测试, 测试报告如何展示,如何自动构建, 诸多问题等待解决.

1.8K30
领券