2010-03-15 34 views
1

我的问题是关于在使用“后退”按钮回到活动时恢复复杂的活动相关数据。 活动A有一个连接到ArrayAdapter的ListView作为其数据源 - 这发生在onCreate()中。Android:按“后退”按钮时如何恢复列表数据?

  1. 默认情况下,如果我移动到活动B并按下“返回”以返回到活动A,我的列表是否保持与所有数据完好无损,或者只是获得了屏幕的可视“复制”丢失了吗?
  2. 当涉及多项活动时,我该怎么办?假​​设活动A开始活动B,它开始活动C,然后我按两次“返回”到达A.如何确保A的完整性数据回到前台? PrefsManager似乎并不直观地处理复杂的对象。

谢谢,罗布

回答

1

活性A具有一个ListView是 连接ArrayAdapter用作 其数据源

注意,一个ArrayAdapter不是持久存储中。

默认情况下,如果我移动到活动B ,然后按“返回”回到 活动A,请问我的名单留在所有的数据完整 还是我刚刚得到的 视觉上的“复制”屏幕但 数据丢失?

这取决于。

通常,Activity A没有去过任何地方。但是,如果用户长时间离开应用,则Android可能会销毁Activity A,在活动堆栈中留下占位符以释放内存。如果稍后用户按BACK,则Android将重新创建Activity答。在这种情况下,您需要使用持久存储(文件,数据库等)或使用onSaveInstanceState()onRestoreInstanceState()来挂起数据。

您可以在活动类描述的Activity Lifecycle部分找到更多信息。

+0

非常感谢您的回复。 – Rob 2010-03-16 07:25:29

0

除非你主动finish()活动A,当您启动活动B,它的数据和状态都将当你有多少活动叠加起来返回不管它,存在。

+0

这不一定是正确的。 Android可能会选择销毁该活动以释放RAM以进行其他处理。 – CommonsWare 2010-03-15 15:02:21

+0

谢谢你的回复,David。 – Rob 2010-03-16 07:25:00