我已经实现了onRestoreInstanceState和onSaveInstanceState。当应用程序最小化时(通过按主页按钮,或其他活动位于前台),它们都能成功运行。但是,当我最小化应用程序并终止进程时(通过打开当前进程列表并结束该进程),应用程序不会还原已保存的实例状态。如何让它恢复保存的状态?我是使用serializable将savedInstanceState包写入文件的最佳选择(因此将某些内容存储在硬盘驱动器上,而不是RAM中),然后从文件中重新加载savedInstanceState?
答案 0 :(得分:9)
如何让它恢复保存状态?
你做不到。这不是保存的实例状态的目的。
我是使用serializable将savedInstanceState包写入文件的最佳选择(因此将某些内容存储在硬盘驱动器上,而不是RAM中),然后从文件中重新加载savedInstanceState?
您的“最佳选择”是持久性,例如文件,数据库或SharedPreferences
。你的具体方法似乎很奇怪。
保存的实例状态仅 用于临时信息,例如用户已填写但尚未提交的表单的内容。除此之外的任何东西都不属于已保存的实例状态,而是属于某种持久数据模型。这与构建Web应用程序没什么不同,在这个应用程序中,DOM和JavaScript变量中的数据不会永久存在,而是需要存储在某个地方(通常在Web服务器上)。
答案 1 :(得分:0)
答案可能为时已晚,但是您可以使用Android Jetpack中的SavedStateHandle
保存状态(并且可以在进程终止后生存下来)。
在此处查看更多信息: https://developer.android.com/topic/libraries/architecture/viewmodel-savedstate