You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

安卓Jetpack的SavedStateViewModelFactory如何工作?

安卓Jetpack的SavedStateViewModelFactory是一个辅助类,用于创建具有保存状态功能的ViewModel。它可以帮助我们在配置改变(如屏幕旋转)时保持ViewModel的状态。

以下是一个示例代码,展示了如何使用SavedStateViewModelFactory:

  1. 首先,在你的ViewModel类中,添加一个构造函数,接受SavedStateHandle参数:
class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
    // ...
}
  1. 在Activity或Fragment中获取SavedStateViewModelFactory的实例,并使用它来创建ViewModel:
val factory = SavedStateViewModelFactory(this)
val viewModel: MyViewModel = ViewModelProvider(this, factory).get(MyViewModel::class.java)
  1. 然后,你可以使用savedStateHandle来保存和恢复数据。例如,保存一个整数值:
val value = 10
viewModel.savedStateHandle.set("key", value)
  1. 在需要的地方,你可以从savedStateHandle中获取保存的值:
val savedValue = viewModel.savedStateHandle.get<Int>("key")

上面的代码片段展示了如何使用SavedStateViewModelFactory来创建具有保存状态功能的ViewModel,并且在ViewModel中保存和获取数据。在配置改变时,SavedStateViewModelFactory会自动处理保存和恢复数据的逻辑,使得ViewModel的状态能够得到保持。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

MAD,现代安卓开发技术:Android 领域开发方式的重大变革|社区征文

有的时候 Google 会将其翻译成`现代安卓开发`,有的时候又翻译成`新式安卓开发`,个人觉得前者的翻译虽然激进、倒也贴切。下面按照 MAD 的构成要点逐步展开,帮助大家快速了解 MAD 的技术理念。如果大家对其中的语言... 【Android Studio】演示 Android 官方 IDE 的重要特性3. 【Android App Bundle】简要普及 Google 推崇的 App 新格式4. 【**Kotlin**】解读 Android 首推的开发语言的优点6. 【**Jetpack**】讲述 Android 持...

借助 MAD 助力你的 Android 应用开发|社区征文

Android 自 08 年诞生之后的多年间 SDK 变化一直不大,开发方式较为固定。13 年起技术更新逐渐加速,特别是 17年之后, 随着 Kotlin 及 Jetpack 等新技术的出现 Android 开发方式发生了很大变化,去年推出的 Jetpack C... ()}```如上,我们使用 data class 定义 `UiState` 用在 ViewModel 中。 val 声明属性保证了 State 不可变性。使用密封类定义 `Result` 有利于对各种请求结果进行枚举,简化逻辑。```kotlinprivate val _uiS...

展望 2022 :Android 开发技术动向 | 社区征文

Android OS- 12L- IoT- Kotlin- Jetpack- Jetpack Compose- Android Studio- AGP# Android OS## Material YouAndroid12 在10月进行了正式推送。Android12 的最大亮点就是基于 Material You 设计语言... override fun onCreate(savedInstanceState: Bundle?) { ... lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.STARTED) { viewModel.userMessages.c...

深度解读 Android 14 重要的 8 个新特性|社区征文

对外版本为 **Android 14**。一般来说,升级任务分为 ROM 角度和 App 角度,前者比较关心系统内部实现的变化,后者则更加关心对外的 **New Features** 和 **Behavior Changes**。本文主要聚焦在 App 角度,即作为 3r... override fun onCreate(savedInstanceState: Bundle?) { ... val greenPaint = Paint().apply { color = Color.GREEN } ​ with(binding.textview1...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

安卓Jetpack的SavedStateViewModelFactory如何工作?-优选内容

MAD,现代安卓开发技术:Android 领域开发方式的重大变革|社区征文
有的时候 Google 会将其翻译成`现代安卓开发`,有的时候又翻译成`新式安卓开发`,个人觉得前者的翻译虽然激进、倒也贴切。下面按照 MAD 的构成要点逐步展开,帮助大家快速了解 MAD 的技术理念。如果大家对其中的语言... 【Android Studio】演示 Android 官方 IDE 的重要特性3. 【Android App Bundle】简要普及 Google 推崇的 App 新格式4. 【**Kotlin**】解读 Android 首推的开发语言的优点6. 【**Jetpack**】讲述 Android 持...
借助 MAD 助力你的 Android 应用开发|社区征文
Android 自 08 年诞生之后的多年间 SDK 变化一直不大,开发方式较为固定。13 年起技术更新逐渐加速,特别是 17年之后, 随着 Kotlin 及 Jetpack 等新技术的出现 Android 开发方式发生了很大变化,去年推出的 Jetpack C... ()}```如上,我们使用 data class 定义 `UiState` 用在 ViewModel 中。 val 声明属性保证了 State 不可变性。使用密封类定义 `Result` 有利于对各种请求结果进行枚举,简化逻辑。```kotlinprivate val _uiS...
展望 2022 :Android 开发技术动向 | 社区征文
Android OS- 12L- IoT- Kotlin- Jetpack- Jetpack Compose- Android Studio- AGP# Android OS## Material YouAndroid12 在10月进行了正式推送。Android12 的最大亮点就是基于 Material You 设计语言... override fun onCreate(savedInstanceState: Bundle?) { ... lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.STARTED) { viewModel.userMessages.c...
深度解读 Android 14 重要的 8 个新特性|社区征文
对外版本为 **Android 14**。一般来说,升级任务分为 ROM 角度和 App 角度,前者比较关心系统内部实现的变化,后者则更加关心对外的 **New Features** 和 **Behavior Changes**。本文主要聚焦在 App 角度,即作为 3r... override fun onCreate(savedInstanceState: Bundle?) { ... val greenPaint = Paint().apply { color = Color.GREEN } ​ with(binding.textview1...

安卓Jetpack的SavedStateViewModelFactory如何工作?-相关内容

断点续传下载(Android SDK)

示例代码以下代码展示如何断点续传下载大对象。 java import android.os.Bundle;import android.util.Log;import androidx.appcompat.app.AppCompatActivity;import com.volcengine.tos.TOSV2;import com.volceng... import com.volcengine.tos.model.object.HeadObjectV2Input;public class DownloadFileExample extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { Stri...

断点续传(Android SDK)

示例代码以下代码展示如何使用断点续传接口上传文件。 java import android.os.Bundle;import android.util.Log;import androidx.appcompat.app.AppCompatActivity;import com.volcengine.tos.TOSV2;import com.v... import com.volcengine.tos.model.object.UploadFileV2Output;public class UploadFileExample extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { Strin...

普通下载(Android SDK)

import androidx.appcompat.app.AppCompatActivity;import com.volcengine.tos.TOSV2;import com.volcengine.tos.TOSV2ClientBuilder;import com.volcengine.tos.TosException;import com.volcengine.tos.model.ob... public class GetObjectInStringExample extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { String endpoint = "your endpoint"; String region ...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

普通上传(Android SDK)

Android SDK 支持通过流式或者文件的方式上传一个对象到 TOS 服务端。本文介绍如何使用流式上传和文件上传方式上传您的数据。 上传说明流式上传:指使用文件流、网络流等流式数据或字符串、byte 数组作为 TOS 的数据... model.object.PutObjectOutput;import java.io.ByteArrayInputStream;public class PutObjectByteExample extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { ...

管理对象元数据(Android SDK)

import com.volcengine.tos.model.object.ObjectMetaRequestOptions;import com.volcengine.tos.model.object.SetObjectMetaInput;import com.volcengine.tos.model.object.SetObjectMetaOutput;import java.io.By... super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); TOSV2 tos = new TOSV2ClientBuilder().build(region, endpoint, accessKey, secretKey, securi...

分片上传(Android SDK)

import com.volcengine.tos.model.object.CompleteMultipartUploadV2Input;import com.volcengine.tos.model.object.CompleteMultipartUploadV2Output;import com.volcengine.tos.model.object.CreateMultipartUpl... super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); TOSV2 tos = new TOSV2ClientBuilder().build(region, endpoint, accessKey, secretKey, securi...

【社区征文】Compose 为什么可以跨平台?

Compose 不止能用于 Android 应用开发,借助其分层的架构设计以及 Kotlin 的跨平台优势,也是一个极具潜力的 Kotlin 跨平台框架。本文让我们从 Compose Runtime 的视角出发,看看 Compose 实现跨平台开发的基本原理。... 绘制等 UI 渲染工作- **Compose Foundation**: 提供用于布局的基础 Composable 组件,例如 `Column`,`Row` 等。- **Compose Material**:提供上层的面向 Material 设计风格的 Composable 组件。各层的职责明确,其...

10 个问题带你了解 Compose Multiplatform 1.0 |社区征文

正文开始前先统一一下文中的用语:- **compose-jb**:Compose Multiplatform 简称,包含下面三者- **compose-android**:Jetpack Compose- **compose-desktop**:Compose for Desktop- **compose-web**: Compose fo... var windowSize by remember { mutableStateOf(IntSize.Zero) } var windowLocation by remember { mutableStateOf(IntOffset.Zero) } AppWindowAmbient.current?.apply { events...

Android 14 返回界面大升级,预览界面和全新返回箭头|社区征文

Android 13 的版本里 Android 就针对***返回导航***进行了大量更改,包括:1. 废弃原有的 `KEYCODE_BACK` KeyEvent2. 提供 Manifest 属性 `enableOnBackInvokedCallback` 以配置是否应用全新的 Back 导航特性3... override fun onCreate(savedInstanceState: Bundle?) { ... if (BuildCompat.isAtLeastT()) { onBackInvokedCallback = OnBackInvokedCallback { onBackEven...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询