当使用startActivityForResult()时,我们是否还必须在后台保存上次资源清理的活动状态



我有一个主活动,它使用startActivityForResult()将我带到另一个活动。生成的活动执行一个过程,并最终将对象返回到主活动。我的问题是:

  1. 如果用户在结果活动中按下android屏幕上的主页按钮,并且android清理了我的应用程序的资源,我必须只保存我的结果活动的状态吗?或者我还必须保存主活动和结果活动的态度,才能恢复我的应用的当前状态。

  2. 如果我必须保存这两个活动的状态,我该怎么做?

p.s:我在主要活动中添加了一些数据。我想为结果和主要活动恢复我的状态。

如果用户在结果活动中按下安卓屏幕上的主页按钮,安卓会清理我的应用程序的资源,我是否必须只保存我的结果活动的状态,或者我还必须保存主活动和结果活动的状态,以恢复我的应用当前状态

您不需要手动触发onSaveInstanceState()。因此,通过执行此方法保存的具有状态的所有内容都将自动持久化。

但是

  • 默认情况下,甚至不会保存所有View的状态。例如,如果不设置属性android:freezesText="true",则更改了文本的TextView将恢复为布局文件中的文本

  • 如果您在Activity的字段(属性(中存储了一些数据,如果不采取措施将其持久化,则这些数据将丢失(请注意,这对ViewModels也是有效的-它们在配置更改后仍然有效,但它们不是不朽的(。

持久化数据的选项:如果与View层相关,例如RecyclerView中的选定项目,则可以覆盖onSaveInstanceState()并将项目id保存在savedInstanceStateBundle中。其他可能性包括写入SharedPreferences和拥有SQLite数据库。另请参阅保留UI状态的选项以及数据和文件存储概述

相关内容

  • 没有找到相关文章

最新更新