[JetPack] androidx.lifecycle库中ViewModel的新旧版本API差异

别再自己造轮子了!用Jetpack组件库快速搞定Android App架构(附避坑指南) 本文详细介绍了如何使用Jetpack组件库快速构建高效的Android应用架构,避免重复造轮子。通过实战案例和避坑指南,展示了Jetpack在数据持久化、界面数据管理等方面的优势,帮助开发者提升开发效率和代码质量。 阅读详情

1.背景

谷歌官方的JetPack框架给开发者带来了丰富、好用的接口组件,很大程度上提升了应用质量和开发效率。但在开发过程中,笔者遇到一个问题,从截图(如下)上面可以看到,旧版本的API被添加了Deprecated,也就是 不给推荐使用。

在这里插入图片描述

2.ViewModelProviders接口构造ViewModel的实现原理

  • 查看 ViewModelProviders.of(this) 方法
    @Deprecated
    @NonNull
    @MainThread
    public static ViewModelProvider of(@NonNull FragmentActivity activity) {
        return new ViewModelProvider(activity);
    }
  • 结论:可以看到,ViewModelProviders只是封装了一个静态方法of来新建一个ViewModelProvider对象,与直接 new 一个ViewModelProvider的方式,本质上是相同的,因此,可以建议使用新API的方法。

3.为什么要 抛弃ViewModelProviders的构造方法,存在什么问题,或者 新API有什么优势呢?

未完待续,敬请期待
Jetpack Compose入门指南:从声明式UI到Android现代开发实践 声明式UI是一种现代UI开发范式,它通过描述界面在不同状态下的表现,而非一步步指令式地操作视图对象,从根本上改变了构建用户界面的思维方式。其核心原理在于UI作为状态的函数,当应用状态变化时,系统会自动、高效地计算差异并更新界面,这极大地简化了状态与UI同步的复杂性。这种模式的技术价值在于提升开发效率、增强代码可维护性,并优化了性能,尤其适用于需要频繁更新界面、组件高度复用的移动应用场景。Jetpack Compose正是Android平台上对这一范式的革命性实现,它通过可组合函数、智能重组等机制,将声明式理 阅读详情

相关推荐

Spring Boot与Android集成AI实战:构建智能应用架构与工程落地

在软件架构演进中,MVC模式长期主导着应用开发,但随着大语言模型和AI Agent技术的成熟,智能层正成为现代应用的新核心。这一转变并非取代传统开发,而是通过引入AI服务层来处理非结构化请求、生成动态内容,从而扩展应用能力。其技术价值在于将自然语言理解与传统业务逻辑无缝结合,实现更直观的人机交互。在工程实践中,开发者可利用Spring AI等框架统一抽象多种模型服务,简化集成流程。典型的应用场景包括智能客服、内容生成、意图识别等。本文以Spring Boot后端与Android客户端为例,详细展示了如何通过

cqwf95925的博客 483

androidx.lifecycle 中 ViewModelProviders 源码学习

如果在学习 LiveData ,其中需要ViewModelProviders,会出现爆红,找不到该类的方法,那是没有导入相关库,如下: implementation "androidx.lifecycle:lifecycle-viewmodel:2.1.0" implementation 'android.arch.lifecycle:extensions:1.1.1' ...

qq_27211655的博客 3274

Android Fragment深度解析:从生命周期到事务管理的实战指南

在Android应用开发中,UI组件的生命周期管理和模块化设计是构建灵活、可复用界面的核心基础。Fragment作为Android架构的关键组件,其设计哲学在于提供一个具有独立生命周期的UI模块化容器,实现了视图与逻辑的高内聚、低耦合。这一机制的技术价值在于,它允许开发者像搭积木一样组合界面,显著提升了代码的复用性和可维护性,尤其适用于实现底部导航、ViewPager2分页以及适配平板、折叠屏等复杂多窗格布局。理解Fragment的生命周期与宿主Activity的协同、掌握FragmentManager与F

weixin_30945039的博客 389

Android ViewModel,Lifecycles和LiveData组件讲解

一、ViewModel ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。 ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。 简单的说就是,在android中,当Activity重建或销毁时,页面上的数据会丢失。为了保存页面的数据,我们以前通常的做法是在 onSaveInstanceState 中,将数据保存到 bundle 中,再在 onCreate 中将 bundle 中的数据取出来。 而使用 ViewModel,我们就无需再用这种方法保存,因为 ViewMode

ChenYiRan123456的博客 2130

心电图机原理及电路超详细讲解

前置心电放大电路(虚线框:这是隔离电路的分界,在隔离电路分析中知道,完整隔离包括信号隔离(脉宽调制)、控制信号隔离(光电耦合)和电源隔离)后级放大电路。

fcxgfdjy的博客 2万+

开源代码分享(29)-基于拉丁超立方抽样的风光场景生成和削减

作为分层抽样方法的一 种,拉丁超立方抽样具有良好的抽样精度和效率[14]。本文使用多场景方法来描述可再生能源(风电、光伏)的不确定性。以风电功率为例,首先假定风电功率服从正态分布 N(μ, δ 2 ),μ 为预测值的期望值,δ 为其波动的百分比。接着,采用拉丁超立方抽样[21]生成大量服从概率分布约束的风电出力场景,并采用考虑 Kantorovich 距离[22]的场景削减技术处理该场景,进行场景削减。最后,导出具有相应概率的削减之后的场景。

配电网和matlab的博客 923

Android Studio 4.0 New Class小坑以及ViewModelProviders弃用

初建项目的改变 AndroidStudio4.0版本之前如果需要使用 jetpack 类,在初建项目之时需要勾选上图中的 Use androidx.*artifacts 更新为4.0版本之后: 原先的勾选按钮消失,将进行默认Androidx New class的改变 4.0版本之前:创建class将给出如下的一个弹窗,通过这种方式,可以直接将类的名称、种类、父类、要实现的接口、包名、作用域等状态清晰的展示出来,仅需要傻瓜式的配置即可,而且会有代码提示。 更新到4.0之后,类的创建方式改变成了根据文件

qq_45984789的博客 1540

特斯拉Model 3 BMS主控板拆解:从硬件设计到热管理策略的实战解析

本文深度拆解特斯拉Model 3的BMS主控板,解析其硬件架构与热管理协同策略。文章聚焦于主控板的分区布局、双核MCU的智慧分工,以及从被动监控到主动干预的热管理范式转变,揭示了特斯拉在高压安全、实时控制与系统级工程思维上的设计哲学。

zz67890的博客 594

ViewModel 的使用和原理

ViewModel 的使用和原理

Hanyang Li的专栏 1078

【华为OD机试真题】65、高矮个子排队 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

题目描述 >现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。 >  我们现在希望小朋友排队,以"高" "矮" "高" "矮" 顺序排列,每一个高位置的小朋友要比相邻的位置高或者相等;每个 "矮" 位置的小朋友要比相邻的位置矮或者相等; >  要求小朋友们移动的距离和最小,第一个从“高"位开始排,输出最小移动距离即可。 >  例如,在示范小队{5,3,1,2,3}中, {5, 1, 3, 2, 3}是排序结果。 > 

KJ.JK 2098

C#与大数据分析:如何通过上位机进行设备故障诊断与预测

设备故障诊断是通过对设备的运行状态数据进行分析,识别和确认故障的类型和位置。而设备故障预测则是通过对设备的历史数据和运行状态进行分析,预测设备何时可能出现故障,从而进行预防性维护。数据采集:通过各种传感器、PLC、嵌入式设备等采集设备运行数据,如温度、压力、振动、转速、功率等。数据预处理:对采集到的数据进行清洗、去噪、缺失值处理、标准化等操作,以确保数据质量。特征工程:从原始数据中提取出有助于故障诊断和预测的特征,例如统计特征、时域特征、频域特征等。数据分析与建模。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1060

ViewModel详解

通过传递的ViewModelStoreOwner对象,获取ViewModelStore对象。如果ViewModelStoreOwner对象不一致,可能造成获取ViewModelStore对象不一致。而ViewModelStore对象又是用来存储ViewModel的集合。调用ViewModel继承类中请求接口相关的方法。2.获取具体的ViewModel继承类对象。拿到对应的LiveData对象。ViewModel继承类对象。创建ViewModel对象。ViewModel对象存储。声明LiveData对象。

听海的博客 4278

YOLOv8源码解析与复现:ShuffleAttention:高效的混合注意力机制 实现通道和空间混合注意力

随着深度学习在计算机视觉领域的飞速发展,卷积神经网络(CNNs)已经成为图像分类、目标检测、语义分割等任务的核心。为了进一步提升模型的性能,研究者们引入了“注意力机制”,旨在让网络能够动态地关注输入数据中最具信息量的部分。经典的注意力模块,如SE-Net(Squeeze-and-Excitation Networks)和CBAM(Convolutional Block Attention Module),通过通道注意力或结合通道与空间注意力,显著增强了模型的特征表达能力。

FJN110的博客 554

Android Jetpack 是什么

Android Jetpack是Google推出的官方开发组件库,整合了Android开发的最佳实践,包含架构、UI、基础和工具四大类组件。核心组件如ViewModel、LiveData和Room等遵循MVVM架构,解决生命周期管理、数据存储等常见问题。Jetpack基于AndroidX实现向后兼容,支持Kotlin协程等现代特性,能显著减少样板代码,提升应用质量和开发效率。其优势包括官方维护、标准化架构、无缝兼容和丰富生态,是构建健壮Android应用的推荐方案。学习Jetpack需先掌握Android和

学习的最佳方式,就是把它写下来! 841

CCF编程培训师资认证(PTA)标准(教学能力T)

随着计算机科学的不断发展,计算机相关技术应用到社会各个行业,越来越多的青少年参加到了计算机程序设计的学习中,这对编程培训教师提出了更高的专业要求和职业要求。CCF开展编程培训师资认证项目(Programming Trainer Accreditation,PTA),旨在建立一个规范的、科学的、权威且有公信力的三方认证。认证考试分编程专业能力(P)和教学能力(T)两部分。本标准根据《CCF编程培训师资认证条例》第十条制定,旨在明确教学能力(T)的测试标准。

lan_in的博客 1709

零基础学GPU KMD--8. 内存管理:GPU 显存与系统内存的协同​8.1 显存分配策略:GEM / TTM 原理

支持 VRAM、GTT(Graphics Translation Table)、SYSTEM 内存的动态迁移与缓存管理。:若缓冲区在 SYSTEM,TTM 分配 GTT 条目并建立页表映射,使 GPU 可直接访问。:系统内存中预留给 GPU 直接访问的区域,通过 GPU 的 MMU 做地址翻译。你需要我继续展开这一部分吗?​ 为复杂离散 GPU 设计,应对大容量 VRAM、多内存域、显存迁移等问题。:重量级、功能全,适合大容量、多内存域的离散 GPU,强调显存迁移与统一管理。

amy_mhd的博客 185

AndroidX终极迁移指南

AndroidX 是 Android 团队用于在 Jetpack 中开发、测试、打包和发布库以及对其进行版本控制的开源项目。 AndroidX 对原始 Android 支持库进行了重大改进。与支持库一样,AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容。

洛城夜雨 1200

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Jetpack 内核实战 01】开篇:Jetpack 组件全家桶核心逻辑与专栏完整规划

本文是《Jetpack内核实战》专栏的开篇,主要介绍了Jetpack架构组件的核心价值与学习规划。文章首先分析了传统Android开发在生命周期管理、内存泄漏、代码耦合和数据持久化等方面的痛点,引出Jetpack架构组件的必要性。随后详细介绍了本专栏重点讲解的四大核心组件:ViewModel(UI数据管理)、LiveData(响应式数据通信)、Room(数据库抽象层)和DataStore(现代化轻量存储),并展示了最终的记事本实战项目架构。 专栏共包含12篇文章,采用"原理→组件→整合→优化"的学习路径,每

Jm0218Xx的博客 550

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

还不知道Android Jetpack是什么?你就out了

基础组件提供了横向功能,例如向后兼容性、测试以及Kotlin语言的支持。它包含如下组件库:Android KTX:Android KTX 是一组 Kotlin 扩展程序,它优化了供Kotlin使用的Jetpack和Android平台的API。以更简洁、更愉悦、更惯用的方式使用Kotlin进行Android开发。AppCompat:提供了一系列以AppCompat开头的API,以便兼容低版本的Android开发。Cars(Auto):有助于开发 Android Auto 应用的组件,无需担心特定于车辆的硬件差

2401_84279169的博客 938

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Jetpack Compose入门指南:Android声明式UI开发核心概念与实践

声明式UI是现代移动应用开发的核心范式,它通过描述界面在不同状态下的表现,而非一步步命令式地操作视图,从根本上简化了UI开发逻辑。其原理在于将UI视为状态的函数,当应用状态改变时,框架会自动计算差异并高效更新界面,这带来了更直观的代码组织和更少的手动同步错误。在Android生态中,Jetpack Compose是这一范式的官方实现,它深度集成Kotlin语言特性,通过可组合函数和状态驱动重组机制,显著提升了开发效率与代码可维护性。对于构建动态、响应式的现代Android应用界面,掌握Compose的声明式

weixin_34327223的博客 409

Jetpack Compose 从零到实战:Android 声明式 UI 开发指南

在移动应用开发领域,UI构建方式正经历从传统命令式向现代声明式的范式转变。声明式UI的核心原理是开发者只需描述UI在不同状态下的表现,而无需手动操作视图对象,框架会自动响应状态变化并高效更新界面。这种模式极大地提升了代码的可维护性和开发效率,尤其适用于数据驱动、状态复杂的应用场景。Jetpack Compose 正是基于这一理念的Android现代UI工具包,它使用Kotlin语言统一了UI与业务逻辑,并通过**状态管理**和**重组**机制实现高效渲染。对于希望构建高性能、可维护Android应用的开发者

weixin_34216196的博客 353

Android面试进阶:从生命周期到架构设计,掌握核心原理与工程实践

在Android开发领域,理解核心组件原理与系统机制是构建稳定、高性能应用的基础。Activity、Fragment等组件的生命周期管理,不仅是面试高频考点,更是处理页面状态、数据恢复与内存管理的工程实践核心。其背后涉及系统对应用进程与任务栈的调度原理,深刻理解这些机制,能有效避免内存泄漏与状态不一致问题,提升应用健壮性。随着Jetpack架构组件的普及,ViewModel、LiveData等现代技术方案,为数据驱动UI和生命周期感知编程提供了标准化支持,推动了MVVM等架构模式在工程中的落地。这些技术价值

weixin_33713350的博客 476

Android面试真题解析与核心技术剖析

Android开发面试中,Java并发编程和Binder机制是核心考察点。Java并发涉及线程同步、锁优化等基础概念,而Binder作为Android特有的进程通信框架,其架构设计与性能优势直接影响系统稳定性。掌握这些原理不仅能应对面试,更能指导工程实践,如优化跨进程调用性能、解决内存泄漏等问题。在Framework层,Activity启动流程和View绘制体系是理解Android运行机制的关键,结合Jetpack组件和Kotlin协程等新兴技术,可以构建更高效的应用程序。本文通过百度Android面试真题

429

Compose 基础 - 状态 State

remreber( )可以为组合函数提供数据持久化的功能,remember( )会记住所修饰的值(存储在UI树中),这样在重组后状态不会被初始化(在有添加或移除元素、重组发生在父元素中、屏幕旋转、恢复前台显示的情况下,使用 remember 会造成数据丢失变成初始值,见下方其它方式存储)。有状态组合变为无状态组合需要状态提升,即将状态(数据源和事件) 移出到组合外给调用方处理,具体是将 State 替换为两个形参:要显示的数据(value),对事件的操作 (T) -> Unit,T是新值。

HugMua的博客 1932

Android MVVM实战:LiveData+DataBinding架构避坑指南

MVVM是Android开发中用于解耦UI与业务逻辑的经典架构模式,其核心在于通过可观察数据(如LiveData)驱动声明式UI(如DataBinding),实现生命周期安全、类型安全与响应式更新。LiveData专为Android UI生命周期设计,自动规避内存泄漏与后台更新异常;DataBinding则将数据绑定前置到编译期,消除findViewById、杜绝空指针、提升IDE智能提示与运行时性能。二者组合形成‘数据自驱动UI’闭环,显著降低Fragment臃肿度、减少胶水代码、提升线上稳定性。本文聚焦

weixin_33749131的博客 433
上一篇: 我的 HarmonyOS入门笔记
下一篇: Android Styling System 知识体系
艾特小王子
博客等级 码龄10年 6粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值