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 生命周期 onSaveInstanceState
和 onRestoreInstanceState
。当然,这将取决于您的逻辑,因为如果您在 onResume
中获取所有数据,您将永远不会遇到这个问题。
更多信息在这里:
onSaveInstanceState 和
onRestoreInstanceState
ps:您的 Objects
需要实施 Serializable
或 Parcelable
使用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 生命周期 onSaveInstanceState
和 onRestoreInstanceState
。当然,这将取决于您的逻辑,因为如果您在 onResume
中获取所有数据,您将永远不会遇到这个问题。
更多信息在这里: onSaveInstanceState 和 onRestoreInstanceState
ps:您的 Objects
需要实施 Serializable
或 Parcelable