Android Java创建ViewModel新api

embedded/2025/2/27 1:14:04/

背景

项目使用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/embedded/167412.html

相关文章

基于ffmpeg+openGL ES实现的视频编辑工具-添加背景音乐(十)

在视频编辑领域,背景音乐宛如灵魂,为视频注入情感与氛围,极大地提升其观赏性与感染力。本文将深入探讨如何借助 ffmpeg 和 openGL ES 技术,在视频编辑工具中实现添加背景音乐这一关键功能。 一、技术实现流程概述 在视频中添加背景音乐,首要步骤是借助 ffmpeg 从视频文件…

leetcode day22 59

59 螺旋矩阵 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]示例 2&#xff1a; 输入&#xff1a;…

VIM FZF 安裝和使用

在 Vim 中安装和使用 fzf 进行文件、函数、变量、宏定义的模糊匹配 以下是详细步骤&#xff1a; 1. 安装 fzf 和 fzf.vim 插件 1.1 安装 fzf 工具 fzf 是一个命令行模糊查找工具&#xff0c;必须先安装它。根据你的操作系统选择安装方式&#xff1a; macOS: brew install fz…

Java使用EasyExcel实现异步导出

以下是使用 EasyExcel 工具类实现异步导出功能的 Demo&#xff0c;包括用户发起导出请求后&#xff0c;系统先返回响应&#xff0c;后台读取数据并上传至 COS&#xff0c;最后通知用户下载的完整流程。 实现步骤 用户发起导出请求 前端调用导出接口&#xff0c;后端立即返回响应…

机器学习数学基础:32.斯皮尔曼等级相关

斯皮尔曼等级相关教程 一、定义与原理 斯皮尔曼等级相关系数&#xff08;Spearman’s rank - correlation coefficient&#xff09;&#xff0c;常用 ρ \rho ρ表示&#xff0c;是一种非参数统计量&#xff0c;用于衡量两个变量的等级之间的关联程度。它基于变量的秩次&…

力扣-动态规划-63 不同路径Ⅱ

思路 dp数组定义&#xff1a;到下标为i&#xff0c; j 的地方共有dp[i][j]条路径递推公式&#xff1a;在当前节点不是障碍物时&#xff0c;dp[i][j] dp[i][j-1] dp[i-1][j]&#xff0c;否则就是为0dp数组初始化&#xff1a;dp[0][0]初始化也需要做判断遍历顺序&#xff1a;自…

python制图之小提琴图

提琴图&#xff08;Violin Plot&#xff09;是一种结合了箱线图&#xff08;Box Plot&#xff09;和核密度估计&#xff08;Kernel Density Estimation, KDE&#xff09;的可视化工具&#xff0c;用于展示数据的分布情况和概率密度。它在数据可视化中具有独特的作用.本节我们学…

网络安全服务实施流程管理 网络安全服务体系

一、安全服务 由系统提供的&#xff0c;并能确保系统或数据传输足够安全的服务 安全服务实现了安全策略&#xff0c;而安全机制实现了安全服务 &#xff08;1&#xff09;认证 确保通信实体就是它所声称的那个实体。认证服务与确保通信是密切相关的。 对等实体认证&#xf…