Android Java创建ViewModel新api

devtools/2025/2/25 21:55:54/

背景

项目使用Java,创建ViewModel发现之前旧api不管用了。不要问为什么项目还要用Java,别问。老项目不让升级。

ViewModel创建新方式

新方式是因为依赖新版本库,其实用旧版本库就回到旧方式了。
依赖:

    def lifecycle_version = "2.5.0"// ViewModelimplementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"// LiveDataimplementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"// Lifecycles only (without ViewModel or LiveData)implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

从2.4开始换新方式,当然传递参数更容易了。

public class LauncherViewModel extends ViewModel {private static final String TAG = "LauncherViewModel";public static final ViewModelInitializer<LauncherViewModel> initializer = new ViewModelInitializer<>(LauncherViewModel.class,creationExtras -> {return new LauncherViewModel();});
}    

传递参数的案例:
也可以参考传递参数,变得简单了

public class MyViewModel extends ViewModel {public MyViewModel(MyRepository myRepository,SavedStateHandle savedStateHandle) { /* Init ViewModel here */ }static final ViewModelInitializer<MyViewModel> initializer = new ViewModelInitializer<>(MyViewModel.class,creationExtras -> {MyApplication app = (MyApplication) creationExtras.get(APPLICATION_KEY);assert app != null;SavedStateHandle savedStateHandle = createSavedStateHandle(creationExtras);return new MyViewModel(app.getMyRepository(), savedStateHandle);});
}

初始化:

MyViewModel myViewModel = new ViewModelProvider(this,ViewModelProvider.Factory.from(MyViewModel.initializer)
).get(MyViewModel.class);

没错,就是这样,比之前多了2个参数。


http://www.ppmy.cn/devtools/162662.html

相关文章

C++ 继承,多态

看前须知&#xff1a; 本篇博客是作者听课时的笔记&#xff0c;不喜勿喷&#xff0c;若有疑问可以评论区一起讨论。 继承 定义&#xff1a; 继承机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段&#xff0c;它允许我们在保持原有 类特性的基础上进⾏扩展&#xff0c;增…

PyTorch gather 方法详解:作用、应用场景与示例解析(中英双语)

PyTorch gather 方法详解&#xff1a;作用、应用场景与示例解析 在深度学习和自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;我们经常需要从高维张量中提取特定索引的数据。 PyTorch 提供的 torch.gather 方法可以高效地从张量的指定维度收集数据&#xff0c;广泛…

工业级无人机手持地面站技术详解

工业级无人机手持地面站是无人机系统的核心组成部分&#xff0c;它集控制、通信、数据处理于一体&#xff0c;为无人机的安全飞行和任务执行提供全面支持。以下是对工业级无人机手持地面站技术的详细解析&#xff1a; 一、硬件构成 1. 处理器与操作系统&#xff1a; 工业级手…

【JavaEE】-- 多线程(初阶)2

文章目录 3.线程的状态3.1观察线程的所有状态3.2线程状态和状态转移的意义 4.多线程带来的的风险-线程安全 (重点)4.1观察线程不安全4.2 线程不安全的原因4.2.1 线程调度是随机的4.2.2 修改共享数据4.2.3 原子性4.2.4 内存可见性4.2.5 指令重排序 4.3解决之前的线程不安全问题 …

UE5 GamePlay 知识点

一、核心游戏框架 GameInstance 全局单例,生命周期贯穿整个游戏进程 负责Actor预注册管理(PreRegisterActor)和关卡加载(LoadLevel) 跨关卡数据存储的最佳选择 GameMode 仅存在于服务器端,定义游戏规则 职责包括: 创建玩家Pawn和PlayerController 管理游戏状态(GameSt…

可编辑112页PPT | DeepSeek行业应用实践报告

荐言分享&#xff1a;DeepSeek&#xff0c;作为一种前沿的人工智能技术&#xff0c;自其发布以来&#xff0c;已在多个行业领域展现出广泛的应用潜力和实践价值。本报告旨在全面介绍DeepSeek的技术特点、行业应用实践以及其对未来行业发展的深远影响。 DeepSeek-R1&#xff0c;…

P8772 [蓝桥杯 2022 省 A] 求和--简单题的陷阱——(不开long long见祖宗!!!

P8772 [蓝桥杯 2022 省 A] 求和 题目分析代码 题目 分析 cnmmd 没什么好分析的&#xff0c;n≤210^5&#xff0c;tmd 我拿着a[100010]算半天 简单题的陷阱- - 代码 #include <iostream> #include <vector> #include <string> #include <algorithm> #i…

基于ffmpeg+openGL ES实现的视频编辑工具-添加转场(九)

在视频编辑的广阔领域中,转场效果无疑是提升视频流畅性与观赏性的关键要素。巧妙运用转场,能够让不同视频片段之间的衔接更为自然,同时赋予视频独特的创意魅力。本文将深入探讨如何借助 ffmpeg 和 openGL ES 技术,在视频编辑工具中实现丰富多样的转场效果。 一、转场技术原…