带有java集合的OnSaveInstanceState/OnRestoreInstanceState

带有java集合的OnSaveInstanceState/OnRestoreInstanceState,java,android,onactivityresult,activity-lifecycle,Java,Android,Onactivityresult,Activity Lifecycle,当使用onsaveInstanceState/onRestoreInstanceStateflow时,是保存java集合的好方法吗 我有一个活动,它使用一些java集合(例如包含类型A的对象的ArrayList)填充一些信息。与普通android应用程序一样,此信息填充在列表视图中。此外,每一行都将为结果(startActivityForResult(…))启动一个详细信息活动,并在返回时进行一些更新(使用onActivityResult) 出于测试目的,我在设备开发人员首选项上启用了“不保留活

当使用
onsaveInstanceState/onRestoreInstanceState
flow时,是保存java集合的好方法吗

我有一个活动,它使用一些java集合(例如包含类型A的对象的
ArrayList
)填充一些信息。与普通android应用程序一样,此信息填充在
列表视图中。此外,每一行都将为结果(
startActivityForResult(…)
)启动一个详细信息活动,并在返回时进行一些更新(使用onActivityResult)

出于测试目的,我在设备开发人员首选项上启用了“不保留活动”,以查看应用程序是否崩溃。从逻辑上讲,当我的父活动被删除时,所有对象都将消失。当我返回到该活动时(
onActivityResult
被执行),我的列表为空/空


我的问题是,将我的列表保存在
onSaveInstanceState
中,并在
onRestoreInstanceState
方法上执行restore是为了防止列表为空,还是足以在
onActivityResult
方法上检查列表是否为空?这将取决于我的活动逻辑?或者,保存将在
onActivityResult
方法上使用的所有项目是一种很好的做法?

如果您不这样做,您的应用程序会崩溃吗?:)
我认为使用
onSaveInstanceState
保存所有对象是一种很好的方法,因为
Android
只会恢复
视图
布局逻辑,而不会恢复数据模型逻辑,这取决于您。别忘了,你在活动结果中体验到了这一点,但如果你的应用程序进入后台,比如说你接到一个电话,当你回来时,
onResume
将被调用,你的数据模型也将在该点为空。因此,如果需要持久化数据模型,则应始终实现saveInstanceState和RestoreInstanceState上的活动生命周期。当然,这取决于您的逻辑,因为如果您在
onResume
中获取所有数据,您将永远不会遇到此问题

详情如下: 和

备注:您的
对象
需要实现
可序列化
可打包