OnSaveInstanceState / OnRestoreInstanceState with java collections

时间:2015-06-19 11:05:39

标签: java android onactivityresult activity-lifecycle

使用onsaveInstanceState/onRestoreInstanceState流程时保存java集合是一种很好的方法吗?

我有一个活动使用一些java集合填充一些信息(例如包含类型A的对象的ArrayList)。这个信息填充在ListView中,就像普通的android应用程序一样。此外,每一行都将为结果(startActivityForResult(...))启动详细活动,并且在返回时(使用onActivityResult)预计会进行一些更新。

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

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

1 个答案:

答案 0 :(得分:1)

如果你不这样做你的应用程序崩溃了吗? :)
我认为使用onSaveInstanceState保存所有对象是一种很好的方法,因为Android只会恢复您的Views布局逻辑,而不是数据模型逻辑,这取决于您。并且不要忘记您在onActivityResult中遇到此问题,但如果您的应用程序转到后台,请假设您接到一个电话,当您回来时,将调用onResume并且您的数据模型将是那时也是null。因此,如果您需要保留数据模型,则应始终实施活动生命周期onSaveInstanceStateonRestoreInstanceState。当然,这取决于您的逻辑,因为如果您在onResume中获取所有数据,那么您将永远不会遇到此问题。

更多信息: onSaveInstanceStateonRestoreInstanceState

ps:您的Objects需要实施SerializableParcelable