OnSaveInstanceState/OnRestoreInstanceState 和 java collections

OnSaveInstanceState/OnRestoreInstanceState with java collections

使用onsaveInstanceState/onRestoreInstanceState流时节省javacollections的好方法吗?

我有一个 activity 使用一些 java collections 填充一些信息(例如 ArrayList 包含 objects 类型 A)。此信息填充在 ListView 中,就像正常的 android 应用程序一样。此外,每一行都将开始一个详细信息 activity 结果 (startActivityForResult(...)) 并且预计会在它 return 时进行一些更新(使用 onActivityResult)。

出于测试目的,我在设备开发人员首选项中启用了 "Don't keep activities" 以查看应用程序是否崩溃。从逻辑上讲,当我的 parent activity 被删除时,所有 objects 都会消失。当我 return 到那个 activity (onActivityResult 被执行)我的列表是 empty/null。

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

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

更多信息在这里: onSaveInstanceStateonRestoreInstanceState

ps:您的 Objects 需要实施 SerializableParcelable