android - 当我们有 ViewModels 时,我们还需要 onSaveInstanceState() 吗?
问题描述
现在有了 View 模型,我们可以处理配置更改和管理 UI 数据,所以我现在觉得 onSaveInstance() 对我没有用。
就像之前我们在SaveInstanceState() 上存储较小的数据并在配置期间用于恢复它一样,现在使用视图模型我们可以轻松获取更新的数据。如果我们使用 ViewModel ,您能否告诉我onSaveInstanceState()和onRestoreInstancestate()现在的实际用法是什么。
你能告诉我在当前情况下它在 ViewModel 中的用法吗
解决方案
当 Android 操作系统由于内存限制而决定终止您的应用程序进程然后重新创建它时,数据仍然可能丢失。这与配置更改不同。
ViewModel
Activity
从配置更改( / Recreation)中成功保存您的数据,但在Process RecreationFragment
的情况下它不会有太大帮助。
为了即使在 Process Recreation 的情况下也能持久保存数据,您需要使用onSaveInstanceState()
.
然而,随着最近的更新,通过SavedStateHandle ViewModel
直接允许您保存实例状态,这将自动在进程死亡/重新创建后继续存在。这意味着,您不再需要使用onSaveInstanceState
您Activity/Fragment
的跨进程死亡来持久化数据,只需SavedStateHandle
在您的中使用ViewModel
,它就会起到相同的作用。
推荐阅读
- azure - 使用 Rest-API 在 ADLS Gen2 中更新文件的问题
- javascript - 获取画布中的行和列
- php - 使用 Twilio 发送 SMS 后获取 SMS 的费用
- r - 将 .dat 文件读入 R
- r - 如何从 R 中的 geom_smooth 图中获取预测值?
- python - 类中的 Python 类
- z3 - 从 API 设置 Z3 详细程度
- jquery - Kendo UI Grid MVC dataSource.at(0) undefined with AutoBind = false and after dataSource.Read()
- reactjs - 应用程序不会运行 TypeError:无法读取未定义的属性“地图”
- javascript - 构建双重功能按钮