Android:按“后退”按钮时如何恢复列表数据?

时间:2010-03-15 13:52:12

标签: android android-activity

我的问题是在使用“后退”按钮返回活动时恢复复杂的活动相关数据。 Activity A有一个ListView,它连接到ArrayAdapter作为其数据源 - 这发生在onCreate()中。

  1. 默认情况下,如果我移动到活动B并按“返回”返回活动A,我的列表是否保持原样与所有数据或我只是获得屏幕的视觉“复制”但数据丢失?
  2. 如果涉及多项活动,我该怎么办?假设活动A启动活动B,它启动活动C,然后我按两次“返回”转到A.如何确保A数据返回前台时的完整性? PrefsManager似乎不直观地处理复杂对象。
  3. 谢谢,Rob

2 个答案:

答案 0 :(得分:1)

  

活动A有一个ListView   连接到ArrayAdapter作为   其数据来源

请注意,ArrayAdapter不是持久存储。

  

默认情况下,如果我转到活动B.   然后按“返回”返回   活动A,我的清单保持不变   有了所有的数据还是我得到的   视觉“复制”的屏幕,但   数据丢失了吗?

这取决于。

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

您可以在“活动类说明”的Activity Lifecycle部分找到更多信息。

答案 1 :(得分:0)

除非您在启动活动B时主动finish()活动A,否则当您返回活动时,其数据和状态都将存在,无论您堆叠多少活动。