【问题标题】:Android: How to restore List data when pressing the "back" button?Android:按下“返回”按钮时如何恢复列表数据?
【发布时间】:2010-03-15 13:52:12
【问题描述】:

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

  1. 默认情况下,如果我移动到活动 B 并按“返回”以返回活动 A,我的列表是否会保留所有数据,或者我只是获得屏幕的视觉“副本”但数据丢失?
  2. 当涉及多个活动时,我该怎么办?假设活动 A 开始活动 B,活动 B 开始活动 C,然后我按两次“返回”以到达 A。当 A 回到前台时,如何确保 A 数据的完整性? PrefsManager 似乎并不能非常直观地处理复杂的对象。

谢谢,罗伯

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    Activity A 有一个 ListView,它是 连接到 ArrayAdapter 作为 它的数据源

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

    默认情况下,如果我移动到活动 B 然后按“返回”返回 活动 A,我的清单是否保持不变 有所有数据还是我只是得到 屏幕的视觉“副本”,但 数据丢失?

    这取决于。

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

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

    【讨论】:

      【解决方案2】:

      除非你在启动Activity B时主动finish()Activity A,否则无论你堆叠多少Activity,它的数据和状态都会在你返回时呈现。

      【讨论】:

      • 这不一定是真的。 Android 可能会选择销毁 Activity 以释放 RAM 用于其他处理。
      • 感谢您的回复,大卫。
      猜你喜欢
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      相关资源
      最近更新 更多