进程被杀死后恢复状态
Posted
技术标签:
【中文标题】进程被杀死后恢复状态【英文标题】:Restore State after process is killed 【发布时间】:2013-01-02 19:21:25 【问题描述】:我已经实现了 onRestoreInstanceState 和 onSaveInstanceState。当应用程序最小化时(通过按下主页按钮,或者另一个活动在前台),它们都可以成功运行。但是,当我最小化应用程序并终止进程(通过打开当前进程列表并结束该进程)时,应用程序不会恢复保存的实例状态。我怎样才能让它恢复那个保存的状态?我最好的选择是使用可序列化将 savedInstanceState 包写入文件(因此将某些内容存储在硬盘驱动器上,而不是 RAM 上),然后从文件中重新加载 savedInstanceState?
【问题讨论】:
【参考方案1】:我怎样才能让它恢复保存的状态?
你不能。这不是保存的实例状态的用途。
我最好的选择是使用可序列化将 savedInstanceState 包写入文件(因此将某些内容存储在硬盘驱动器上,而不是 RAM 上),然后从文件中重新加载 savedInstanceState?
您的“最佳选择”是持久性,例如文件、数据库或SharedPreferences
。您的具体做法似乎很奇怪。
已保存的实例状态仅用于临时信息,例如用户已填写但尚未提交的表单内容。除此之外的任何东西都不属于保存的实例状态,而是属于某种持久数据模型。这与构建 Web 应用程序没有什么不同,您在 DOM 和 javascript 变量中的数据不会永远存在,而是需要存储在某个地方(通常在 Web 服务器上)。
【讨论】:
谢谢,我只是想确认我必须写入文件。【参考方案2】:答案可能为时已晚,但您可以使用 android Jetpack 中的SavedStateHandle
保存状态(并且它将在进程终止后继续存在)。
在此处查看更多信息: https://developer.android.com/topic/libraries/architecture/viewmodel-savedstate
【讨论】:
以上是关于进程被杀死后恢复状态的主要内容,如果未能解决你的问题,请参考以下文章
在应用程序被杀死后在应用程序启动时恢复未完成的多部分/表单数据上传任务