使用onsaveInstanceState/onRestoreInstanceState
流程时保存java集合是一种很好的方法吗?
我有一个活动使用一些java集合填充一些信息(例如包含类型A的对象的ArrayList
)。这个信息填充在ListView
中,就像普通的android应用程序一样。此外,每一行都将为结果(startActivityForResult(...)
)启动详细活动,并且在返回时(使用onActivityResult)预计会进行一些更新。
出于测试目的,我在设备开发人员首选项上启用了“不要保留活动”以查看应用程序是否崩溃。从逻辑上讲,当我的父活动被删除时,所有对象都将消失。当我返回到该活动(执行onActivityResult
)时,我的列表为空/ null。
我的问题是,在onSaveInstanceState
中保存我的列表并使用onRestoreInstanceState
方法恢复是一种很好的方法,以防止空列表或足以检查{{1上的列表是否为空}} 方法?这取决于我的活动逻辑?或者,最好保存将在onActivityResult
方法上使用的所有项目?
答案 0 :(得分:1)
如果你不这样做你的应用程序崩溃了吗? :)
我认为使用onSaveInstanceState
保存所有对象是一种很好的方法,因为Android
只会恢复您的Views
布局逻辑,而不是数据模型逻辑,这取决于您。并且不要忘记您在onActivityResult
中遇到此问题,但如果您的应用程序转到后台,请假设您接到一个电话,当您回来时,将调用onResume
并且您的数据模型将是那时也是null。因此,如果您需要保留数据模型,则应始终实施活动生命周期onSaveInstanceState
和onRestoreInstanceState
。当然,这取决于您的逻辑,因为如果您在onResume
中获取所有数据,那么您将永远不会遇到此问题。
更多信息: onSaveInstanceState和 onRestoreInstanceState
ps:您的Objects
需要实施Serializable
或Parcelable