当我们有 ViewModel 时,我们还需要 onSaveInstanceState() 吗?

Rav*_*avi 3 android mvvm viewmodel kotlin

现在有了视图模型,我们可以处理配置更改并管理 UI 数据,所以我觉得 onSaveInstance() 现在对我来说没有用处。

就像之前我们在 SaveInstanceState() 上存储较小的数据并在配置期间恢复它一样,现在使用视图模型我们可以轻松获取更新的数据。那么,如果我们使用 ViewModel,您能告诉我onSaveInstanceState()onRestoreInstancestate()现在的实际用法是什么吗?

您能否告诉我它在当前 ViewModel 案例中的用法

iCa*_*ntC 8

当 Android 操作系统由于内存限制而决定终止应用程序进程然后重新创建它时,数据仍然可能会丢失。这与配置更改不同。

ViewModel成功保存了配置更改(Activity/ Recreation )中的数据,但在Process RecreationFragment的情况下不会有太大帮助。

为了即使在进程重建的情况下也能保留数据,您将需要使用onSaveInstanceState().

然而,通过最近的更新,通过SavedStateHandle ViewModel直接允许您保存实例状态,这将自动在进程死亡/重新创建时继续存在。这意味着,您不再需要使用onSaveInstanceStateyourActivity/Fragment来跨进程死亡持久保存数据,只需SavedStateHandle在 your 中使用ViewModel,它的作用是相同的。