7

我已经实现了 onRestoreInstanceState 和 onSaveInstanceState。当应用程序最小化时(通过按下主页按钮,或者另一个活动在前台),它们都可以成功运行。但是,当我最小化应用程序并终止进程(通过打开当前进程列表并结束该进程)时,应用程序不会恢复保存的实例状态。我怎样才能让它恢复那个保存的状态?我最好的选择是使用可序列化将 savedInstanceState 包写入文件(因此将某些内容存储在硬盘驱动器上,而不是 RAM 上),然后从文件中重新加载 savedInstanceState 吗?

4

2 回答 2

10

我怎样才能让它恢复那个保存的状态?

你不能。这不是保存的实例状态的用途。

我最好的选择是使用可序列化将 savedInstanceState 包写入文件(因此将某些内容存储在硬盘驱动器上,而不是 RAM 上),然后从文件中重新加载 savedInstanceState 吗?

您的“最佳选择”是持久性,例如文件、数据库或SharedPreferences. 您的具体方法似乎很奇怪。

保存的实例状态用于临时信息,例如用户已填写但尚未提交的表单的内容。除此之外的任何东西都不属于保存的实例状态,而是属于某种持久数据模型。这与构建 Web 应用程序没有什么不同,您在 DOM 和 JavaScript 变量中的数据不会永远存在,而是需要存储在某个地方(通常在 Web 服务器上)。

于 2013-01-19T01:04:06.770 回答
1

SavedStateHandle答案可能为时已晚,但是您可以使用Android Jetpack保存状态(并且它将在进程终止后幸存下来) 。

在此处查看更多信息: https ://developer.android.com/topic/libraries/architecture/viewmodel-savedstate

于 2020-10-26T14:22:59.983 回答