【问题标题】:Do we still need onSaveInstanceState() when we have ViewModels?当我们有 ViewModels 时,我们还需要 onSaveInstanceState() 吗?
【发布时间】:2020-08-22 14:51:21
【问题描述】:

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

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

能否请您告诉我在 ViewModel 的当前情况下它的用法

【问题讨论】:

    标签: android kotlin mvvm viewmodel


    【解决方案1】:

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

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

    为了即使在 Process Recreation 的情况下也能持久保存数据,您需要使用 onSaveInstanceState()

    但是最近的更新,通过SavedStateHandle ViewModel 直接允许您保存实例状态,这将自动在进程死亡/重新创建后生存。这意味着,您不再需要使用 onSaveInstanceStateActivity/Fragment 来在进程死亡期间保留数据,只需在您的 ViewModel 中使用 SavedStateHandle,它的作用相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 2015-10-24
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多