首页 > 解决方案 > Android SavedStateHandle 未保存在 ViewModel 中

问题描述

我有一个带有SavedStateHandle参数的 ViewModel。我在其中保存一个字符串,如下所示:

    private fun saveString(str: String) {
        state.set(KEY_STRING, str)
    }

然后我强制关闭我的应用程序并重新启动它,并希望像这样检索保存的字符串:

fun getSavedString(): String? {
        return state.get<String>(KEY_String)
    }

但是,它总是返回 null。任何想法如何正确使用 SavedStateHandle?

标签: androidandroid-viewmodel

解决方案


“然后我强制关闭我的应用程序并重新启动它..”

我猜你完全杀死了这个应用程序=)

复制saveState您需要的案例的方法之一:

  1. 启用开发者模式并检查Don't keep activities
  2. 进程限制 ->No background processes
  3. 在后台向您发送应用程序(SavedStateHandle将保存)
  4. 从后台恢复应用程序或点击应用程序图标(SavedStateHandle将恢复)

另一种最简单的方法:

  1. 在后台向您发送应用程序
  2. 点击终止(Logcat)

在此处输入图像描述

  1. 从后台恢复应用程序或点击应用程序图标

SavedStateViewModelFactory如果你想收到SavedStateHandle,你也应该使用ViewModel


推荐阅读