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