android - 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?
解决方案
“然后我强制关闭我的应用程序并重新启动它..”
我猜你完全杀死了这个应用程序=)
复制saveState
您需要的案例的方法之一:
- 启用开发者模式并检查
Don't keep activities
- 进程限制 ->
No background processes
- 在后台向您发送应用程序(
SavedStateHandle
将保存) - 从后台恢复应用程序或点击应用程序图标(
SavedStateHandle
将恢复)
另一种最简单的方法:
- 在后台向您发送应用程序
- 点击终止(Logcat)
- 从后台恢复应用程序或点击应用程序图标
SavedStateViewModelFactory
如果你想收到SavedStateHandle
,你也应该使用ViewModel
推荐阅读
- asp.net - 未为 IIS 托管站点加载 CSS、JS 文件
- http - 如何从 Flutter 中的多行加载 json
- asp.net-mvc-4 - MVC4 子应用程序需要覆盖父应用程序 web.config 中的程序集
- c# - 根据矩形宽度计算fontSize
- excel - 无法使用 OpenXml 从 F# 中的 Excel 文件中读取
- java - 如何调试 java.sql.SQLException:无法解析连接标识符
- php - 无法使用 imagick 保存 webp 格式 - 已解决
- python-3.x - 在下面的代码中使用 'while not' & != 的区别,使用 'while not' 可以正确执行代码,如下面的类型 2,而 != 它只是一个无限循环?
- python - Cythonized pyparser not working properly, getting wrong argument count to functions
- vue.js - Vuetify v-select 与图像