1

你好

图

我想知道这个概念是如何在android中实现的

  • 此应用程序中的导航发生如下:

活动1--到--->活动2--到--.>活动3--到-->活动2

但是这样做::

我从

Activity1-->Activity2-->我没有从Activity2传数据-->Activity3

现在

如果我导航回 Activity2- - 从 - - Activity3

  • 应用程序关闭,因为 Activity2 期待 Activity3 中不存在的数据
  • 我该如何克服这个问题,如何在从 Activity3 导航回来之前保留 Activity 2 的状态(甚至数据)

周期必须是 ::

活动1--到--->活动2--到--.>活动3--到-->活动2


  • 如何做到这一点?
  • 我需要寻找什么概念

我希望我的描述很清楚

4

3 回答 3

0

我认为您在从 Activity3 导航回 Activity2 时再次启动 Activity2,这是错误的方法。您无需再次启动 Activity2。只需从 Activity3 按下返回按钮,您在堆栈中的 Activity2 将再次位于前台,并且不会再次调用 onCreate 方法

于 2013-08-24T15:24:43.920 回答
0
  1. 一个活动完全负责将其状态保存在 中onPause()并将其恢复到 中onCreate()。片段也是如此。

  2. 如果活动 2 请求活动 3 使用 做某事,那么当活动 3 完成时startActivityForResult(),A 将在其 中接收这些结果。onActivityResult()

  3. 所有新开始的活动都构建为一个任务堆栈。当一个新的活动完成后,它下面的旧活动将占据屏幕。

Android 确保以正确的顺序调用这些方法。

于 2013-08-24T15:26:13.583 回答
0

本着已经发布的答案的精神:如果您不重新创建/销毁它们,android-lifecycle 会保留您的活动。但请不要误会,android 不保证一旦你回来数据就会在那里(通常仍然是,但垃圾收集器可能会删除东西等)http://developer.android.com/reference/android/app /Activity.html#ActivityLifecycle

但是,如果我们遗漏了一些东西,并且您不确定如何在从堆栈中删除活动时实际保存数据,您可能会考虑研究持久性机制(请参阅http://developer.android.com/reference/android/app/ Activity.html#SavingPersistentState)。特别是对于您的输入数据(表单等),我引用了有关该问题的文档部分:

当一个活动的 onPause() 方法被调用时,它应该提交给支持的内容提供者或记录用户所做的任何更改。这可确保将要运行的任何其他活动都可以看到这些更改。您可能希望在活动生命周期的关键时刻更积极地提交数据:例如在开始新活动之前、完成自己的活动之前、用户在输入字段之间切换时等。

于 2013-08-24T15:38:28.010 回答