我有一个主活动,它使用startActivityForResult()
将我带到另一个活动。生成的活动执行一个过程,并最终将对象返回到主活动。我的问题是:
-
如果用户在结果活动中按下android屏幕上的主页按钮,并且android清理了我的应用程序的资源,我必须只保存我的结果活动的状态吗?或者我还必须保存主活动和结果活动的态度,才能恢复我的应用的当前状态。
-
如果我必须保存这两个活动的状态,我该怎么做?
p.s:我在主要活动中添加了一些数据。我想为结果和主要活动恢复我的状态。
如果用户在结果活动中按下安卓屏幕上的主页按钮,安卓会清理我的应用程序的资源,我是否必须只保存我的结果活动的状态,或者我还必须保存主活动和结果活动的状态,以恢复我的应用当前状态
您不需要手动触发onSaveInstanceState()
。因此,通过执行此方法保存的具有状态的所有内容都将自动持久化。
但是
-
默认情况下,甚至不会保存所有
View
的状态。例如,如果不设置属性android:freezesText="true"
,则更改了文本的TextView
将恢复为布局文件中的文本 -
如果您在
Activity
的字段(属性(中存储了一些数据,如果不采取措施将其持久化,则这些数据将丢失(请注意,这对ViewModel
s也是有效的-它们在配置更改后仍然有效,但它们不是不朽的(。
持久化数据的选项:如果与View
层相关,例如RecyclerView
中的选定项目,则可以覆盖onSaveInstanceState()
并将项目id保存在savedInstanceStateBundle
中。其他可能性包括写入SharedPreferences
和拥有SQLite数据库。另请参阅保留UI状态的选项以及数据和文件存储概述