java - 带有 java 集合的 OnSaveInstanceState/OnRestoreInstanceState

标签 java android onactivityresult activity-lifecycle

在使用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 生命周期 onSaveInstanceStateonRestoreInstanceState。当然,这将取决于您的逻辑,因为如果您在 onResume 中获取所有数据,您将永远不会遇到这个问题。

更多在这里: onSaveInstanceStateonRestoreInstanceState

ps:你的Objects需要实现Serializable或者Parcelable

关于java - 带有 java 集合的 OnSaveInstanceState/OnRestoreInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30936595/

相关文章:

java - Apache Solr 可以输出 HTML 而不是 XML 吗?

java - 只允许前端调用后端api?

java - Intent 为空

Android onActivityResult 从未从 Fragment 中的 DialogFragment 调用过

java - Android Studio - 文本输入在键盘显示时隐藏字符

android - 立即调用 Intent(Settings.ACTION_SETTINGS) 的 onActivityResult

java - 如何使用java eclipse读取Excel页面的特定工作表

java - SocketChannel.write() 写入问题

android - 如何查找用户是否已注册任何指纹

android - 在openstreetmap android中单击时绘制标记