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

“ViewModelProviders”已弃用。升级生命周期后-扩展:2.1.0到2.2.0-alpha05

ViewModelProviders 在 Android Jetpack 的新版本中已经被弃用,取而代之的是 ViewModelProvider。这个变化发生在 AndroidX Lifecycle 扩展库从 2.1.0 升级到 2.2.0-alpha05 时。以下是关于这个变化的基础概念、优势、类型、应用场景以及如何解决问题的详细说明。

基础概念

ViewModel 是 Android Architecture Components 的一部分,它旨在存储和管理与 UI 相关的数据,并处理配置更改(如屏幕旋转)。ViewModelProviders 是早期用于创建和检索 ViewModel 实例的类,但在新版本中已被 ViewModelProvider 取代。

优势

  • 类型安全ViewModelProvider 提供了类型安全的方式来获取 ViewModel 实例。
  • 更简洁的 API:新的 ViewModelProvider API 更加简洁和直观。
  • 更好的生命周期管理ViewModelProvider 更好地处理了生命周期相关的问题,使得代码更加健壮。

类型

ViewModelProvider 是一个泛型类,可以用于获取特定类型的 ViewModel 实例。例如,如果你有一个 MainViewModel 类,你可以使用 ViewModelProvider<MainViewModel> 来获取它的实例。

应用场景

在 Android 应用中,当你需要在 Activity 或 Fragment 中使用 ViewModel 来管理 UI 相关的数据时,你应该使用 ViewModelProvider

如何解决问题

以下是如何从 ViewModelProviders 迁移到 ViewModelProvider 的示例代码:

旧代码(使用 ViewModelProviders

代码语言:txt
复制
MainViewModel viewModel = ViewModelProviders.of(this).get(MainViewModel.class);

新代码(使用 ViewModelProvider

代码语言:txt
复制
MainViewModel viewModel = new ViewModelProvider(this).get(MainViewModel.class);

或者,如果你使用的是 Kotlin,可以使用更简洁的语法:

代码语言:txt
复制
val viewModel: MainViewModel by viewModels()

参考链接

通过以上步骤,你可以顺利地将 ViewModelProviders 替换为 ViewModelProvider,并享受新 API 带来的优势。

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

相关·内容

Android  JetPack~ ViewModel (一)   介绍与使用

ViewModel类有如下优点: ViewModel类是具有生命感知的能力,与和他绑定的Activity一样的生命周期,它可以解决请求网络时,Activity被突然销毁造成一些不必要的麻烦。...设备信息发生变更数据不会丢失(切横竖屏),其实它只有一个生命周期,检测页面销毁时触发 ViewModel 的另一个特点就是同一个 Activity 的 Fragment 之间可以使用ViewModel实现共享数据...protected void onCleared() { super.onCleared(); } } onCleared方法是ViewModel独有的,当Activity真正退出,...它会调用,而不是销毁调用,因为旋转屏幕也会调用onDestroy。...平常开发中不做任何操作时,如果有网络请求中,Activity被销毁,那么极有可能请求成功返回结果activity中造成泄漏等不必要的麻烦。

65740

Java 近期新闻:JDK 2 进入Rampdown阶段一、JDK 24专家组成立、Apache NetBeans 22发布

这意味着主线源代码库 fork JDK 稳定性库,不会再为 JDK 23 添加额外的 JEP。...和 switch 中的原始类型(预览) JEP 466: 类文件 API(第二次预览) JEP 467: Markdown 文档注释 JEP 469: 向量 API(第八次孵化) JEP 471: ...创建了默认方法来桥接新方法,并将旧方法标记为,计划在 Spring Shell 3.4.x 中将其移除。...Quarkus Quarkus 3.11.1,3.11 系列的第一个维护版本,包含了文档改进、依赖项升级和一些显著变更,例如:通过在安全标识过期时关闭连接来改进对 WebSockets Next 扩展的安全集成支持...同样,Quarkus 3.8 系列的第四个维护版本 3.8.5(跳过了 3.8.0)发布,包含了文档改进和依赖项升级,并解决了一些重要问题,例如:在 Azure Functions HTTP 扩展中使用错误的字符集会导致

14410
  • 管理的Kubernetes API:最佳实践和工具

    我提到的生命周期如下所示: image 如果一个API同时存在多个版本,Kubernetes API 可能会自动为您升级其中一些版本。...随着Kubernetes的发展,旧的API被标记为,并最终被淘汰。这凸显了用户或维护者需要意识的Kubernetes API的重要性。...在 Kubernetes 集群升级过程中,遇到废弃的 API 可能会成为一个潜在问题,特别是如果升级的版本不再支持这些 API。...其多方面的能力有助于在Kubernetes升级期间实现更顺畅的过渡,使其成为识别和有效处理API的重要组成部分。...这些工具共同帮助用户主动识别和解决的API,最大限度地减少在Kubernetes升级过程中可能出现的问题。

    24110

    Java 近期新闻:JDK 19 进入 Rampdown 阶段,JDK 20 专家组,Eclipse Mojarra 4.0

    Spring 框架 在通往 Spring Shell 2.1.0 的道路上,第五个里程碑版本已发布,提供了对 Spring Shell 2.1.0-M4 的修复,比如:带有 @ShellOption 注解的选项未标记为必需...Open Liberty 22.0.0.7-beta 也发布,其特性包括:新的基于时间的日志滚动,以补充现有的基于大小的日志滚动;以及将已定义的应用程序名称添加到 LogRecordContext 扩展中并作为...Apache Groovy 在 3.0 和 2.5 系列小版本发布不到一周的时间里,Groovy 4.03 就发布了 40 个缺陷修复、改进和依赖项升级,比如:Jackson 2.13.3、Spotbugs...Eclipse Mojarra Eclipse 基金会发布了 Eclipse Mojarra 4.0,其特性包括:默认无扩展视图;带有 @ClientWindowScoped 注解的新作用域;一流的 Java...作为 Jakarta Faces 4.0 规范的兼容实现,Eclipse Mojarra 4.0 删除了一些的项,比如:支持 JSP 作为视图声明语言;本地托管 bean;引用本地表达语言的引用;

    71720

    ViewModels 简单入门

    注意,ViewModels 可以很简单的与Fragments 和 Activities,,这里称他们为 UI 控制器。本示例着重于 Activities。 ?...一个简单的例子 分三步骤来设置和使用ViewModel: 通过创建一个扩展 ViewModel 类来从UI控制器中分离出你的数据 建立你的 ViewModel 和UI控制器之间的通信 在 UI 控制器中使用你的...Tracks the score for Team B public int scoreTeamB = 0; } 为了简洁,这里我采用了公共成员存储在ScoreViewModel.java中,也可以选择...让我们想象一下,如果我们扩展 Court-Counter 程序,使其可以支持不同的篮球比赛得分。...对于你打开的每一个不同的比赛画面,在 onCreate 中关联ViewModel和GameScoreActivity ,它将创建不同的 ViewModel 实例。

    1.2K70

    Nacos 2.1.0 正式发布!

    点击关注公众号,Java干货及时送达 2.1.0 新特性 在社区小伙伴的共同努力下,经过了近1个月的Beta测试,Nacos 2.1.0 正式发布,支持鉴权及加解密插件,关闭默认支持服务端从 1.X...默认关闭兼容1.X服务端升级 默认关闭支持服务端从 1.X 版本升级的能力是Nacos2.1.0版本的另一个重要改动。...因此在Nacos2.1版本中,我们默认关闭了兼容1.X服务端平滑升级能功能,关闭该功能直接部署2.1版本将不会再从1.X模式进行检测和升级,而是直接运行在2.X的数据模式下,同时也支持2.0版本直接升级...若是希望从Nacos1.X直接升级Nacos2.1.0版本,则需要在application.properties文件中设置配置nacos.core.support.upgrade.from.1x=true...Java 18 正式发布,finalize 被。。 Spring Boot Admin 横空出世! Spring Boot 学习笔记,这个太全了!

    1K30

    小程序升级WePY2踩坑记

    而这个小程序最早是在18年的时候开发的,的开发框架是 WePY 的 1.7.2 版本,去年也就是 19 年的时候 WePY 框架进行了升级,到了 2.0 版本。...升级之后的 WePY, WePY 官方文档的话来说:通过优化细节,引入 Promise、Async Functions 等让开发小程序项目变得更加简单,高效。...本文将以项目改动为出发点,基于当前这个项目的结构和编码方式来考虑到底升级 WePY2 ,哪里需要改,怎么改以及有哪些需要注意的地方,通过对比 2 个版本的写法差异这个思路来写,不会去太较真 WePY2...❝本篇文章记录的是我和小伙伴这次升级框架遇到的需要改动的地方和坑,所使用的是 wepy 的 2.1.0 版本,后续如果版本升级,本篇记录到的坑如果已经被修复了,请自行忽略本文所述的问题。...但是在 2.x 中这个功能至少从文档上是没看到,虽然源码里提供了一个 use-intercept拦截器的包,但是经过我几番尝试之后还是报错,所以就打算拦截器了,直接在请求里进行参数增加和错误处理。

    2.2K40

    Kubernetes 1.29正式发布,包含49个增强功能

    #03 升级为 beta 版的新特性 以下是一些在 Kubernetes v1.29 版本发布升级为 beta 版本的新特性。 调度器的吞吐量是我们不断面临的挑战。...#05 毕业、和移除功能 升级为稳定版 以下列出了所有升级为稳定版(也称为通用可用)的特性。...如果你有使用 beta API 组的清单或客户端软件,应在升级 v1.29 之前更改它们。...详细信息和建议请参阅 API 的迁移指南: https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-29 Node...这个的字段并不准确,而且历史上一直是由 kubelet 管理的 - 实际上 kubelet 并不了解 kube-proxy 的确切版本,甚至不知道 kube-proxy 是否在运行。

    83510

    GitHub.com跑了1200多台MySQL主机,如何无缝升级8.0?

    其团队表示,为了升级 MySQL 8.0,他们规划、测试和升级本身总共花费了一年多的时间,并且需要 GitHub 内部多个团队的协作。...Azure 虚拟机和裸机主机 存储超过 300 TB 的数据,并在 50 多个数据库集群中每秒处理 550 万次查询 每个集群都配置为具有主副设置的高可用性 分区存储数据 —— 利用水平和垂直分片来扩展...freno 和用于操作主机集群的内部自动化工具 由于需要操作两个版本的 MySQL,因此 GitHub 内部使用的工具和自动化设施需要能够兼容处理混合版本,并了解 5.7 和 8.0 之间新的、不同的或的语法...步骤 4:升级面向内部的实例类型 步骤 5:清理,确认集群不需要回滚并成功升级 MySQL 8.0 ,删除 5.7 服务器。...至于为什么要升级 MySQL 8.0,GitHub 团队表示主要是因为 MySQL 5.7 的生命周期即将结束。此外升级可以获得最新安全补丁、错误修复和性能增强的 MySQL 版本。

    13910

    Kubernetes 1.26 中的删除、和主要更改

    25 张图详解 K8S 管理平台 Rancher 部署实践 变化是 Kubernetes 生命周期不可或缺的一部分:随着 Kubernetes 的成长和成熟,功能可能会被、删除或替换为项目健康的改进...的 API 已被标记为在未来的 Kubernetes 版本中删除;它将继续运行直到被删除(从起至少一年),但使用会导致显示警告。...删除的 API 在当前版本中不再可用,此时您必须迁移到使用替换 API。 一般可用 (GA) 或稳定的 API 版本可能会标记为,但不得在 Kubernetes 的主要版本中删除。...无论 API 是由于功能从测试版升级稳定版而被删除,还是因为该 API 根本没有成功,所有删除都符合此政策。每当删除 API 时,都会在文档中传达迁移选项。...containerd 1.6.0 或更高版本,然后再将该节点升级 Kubernetes v1.26。

    1.8K30

    【AAC 系列四】深入理解架构组件:ViewModel

    ViewModel 重在以感知生命周期的方式 管理界面相关的数据。...并且 ViewModel 能够让我们不必去担心潜在的内存泄露问题,同时 ViewModel 相比于onSaveInstanceState() 方法更有优势,比如存储相对大的数据,并且不需要序列化以及反序列化...ViewModel 的生命周期 我们在前面提到过,ViewModel 并不会因为 Activity 的配置改变销毁而一起销毁,那么 ViewModel 的生命周期到底是怎么样的呢?...); 这里先从 ViewModelProviders.of 方法入手看看: //ViewModelProviders public static ViewModelProvider of(@NonNull...这里 ViewModel 实现的原理就清晰了:通过注入一个retainInstance 为 true 的 HolderFragment ,利用 Fragment 的特性来保证在 Activity 配置改变依然能够存活一下

    92240

    与 Kubernetes 共存:强大的 API 使用和管理

    这些构造使 API 足够灵活,可以针对未知例进行扩展,并且足够简单。...版本和生命周期 版本作为 URL 路径的一部分,并定义了关于服务如何从一个版本变化另一个版本的指南。这些版本将显示在你的 yaml 文件中 apiVersion 中的组名之后。...绝大多数的发生是因为: 资源方案更改(例如,v1beta1 → v1beta2)。 API 变得更加稳定(例如,v1alpha2 → v1beta1)。...自定义资源 对于你创建的自定义资源,以下是处理升级的方法。测试你的 CR 升级很重要,以确保你的控制器能够使用自定义资源以及 Kubernetes API 组和版本正常运行。...更新所有资源,你可以通过在 CR 定义版本中使用 deprecated: true来用旧版本。

    60220

    MySQL8.1来了:MySQL创新和长期支持(LTS)版本简介

    MySQL产品组合和支持生命周期 LTS版本将遵循Oracle终身支持政策,其中包括5年的高级支持和3年的扩展支持。创新版本将得到支持,直到下一个主要和次要版本。...在使用创新版本时,有必要定期升级最新的创新版本,以跟上最新的错误修复和安全补丁。 除了错误修复、安全补丁和新功能之外,创新版本还将引入新的、删除功能,甚至行为更改。...功能的和删除 在MySQL以前的版本中,一个版本中的(例如,5.7)意味着该特征可以在下一个主要/次要版本中被移除(例如,8.0)。...当我们过渡到新模型并向第一个8.x LTS版本移动时,预计和删除会增加。...可以从LTS或创新版本复制 下一个LTS版本 任何未来的创新版本,直到下一个LTS版本(LTS 8.4 → LTS 9.7,但不是LTS 8.4 → LTS 10.7) 如果在升级新版本发生任何问题

    9.8K30

    K8S 在 v1.27 中移除的特性和主要变更

    从 3 月 20 日起,所有来自过期 k8s.gcr.io[1] 仓库的流量将被重定向 registry.k8s.io[2]。的 k8s.gcr.io 仓库最终将被淘汰。...该策略规定,只有当较新的、稳定的相同 API 可用时,原有的稳定 API 才可以被, 每个稳定级别的 API 都有一个最短的生命周期。...的 API 指的是标记为将在后续发行某个 Kubernetes 版本时移除的 API;移除之前该 API 将继续发挥作用(从起至少一年时间), 但使用时会显示一条警告。...正式发布(GA)或稳定的 API 版本可能被标记为,但只有在 Kubernetes 大版本更新时才会被移除。 测试版(Beta)或预发布 API 版本在用后必须在后续 3 个版本中继续支持。...移除 --master-service-namespace 命令行参数 kube-apiserver 接受一个的命令行参数 --master-service-namespace, 该参数指定在何处创建名为

    1.3K10

    Kubernetes 1.25 中的重大更改和删除

    该策略规定: 只有当同一 API 的更新、稳定版本可用并且 API 具有每个稳定性级别的最短生命周期时,才可能稳定 API。...普遍可用 (GA) 或稳定的 API 版本可能被标记为,但不得在 Kubernetes 的主要版本中删除。 用后的 3 个版本必须支持 Beta 或预发布 API 版本。...无论 API 是由于功能从 beta 升级稳定还是因为该 API 根本没有成功而被删除,所有删除都符合此政策。每当删除 API 时,文档中都会传达迁移选项。...支持 cgroup v2 升级稳定版[10] 两年多前,新的内核 cgroups v2 API 被宣布为稳定的,在这个版本中,我们正朝着全面采用它迈出坚实的步伐。...kubernetes/pull/111255 [9] 签署发布工件: https://github.com/kubernetes/enhancements/issues/3031 [10] 支持 cgroup v2 升级稳定版

    1.9K20
    领券