在android中的活动之间导航的设计模式

时间:2013-08-24 15:20:46

标签: android

您好

fig

我想知道这个概念是如何在android

中实现的
  • 此应用程序中的导航发生方式如下::
  

活动1 - 至 - - - >活动2-至 - 。>活动3 - 至 - - >   活性2

但是这样做了

我从

传递数据
  

活动1 - - >活动2- - >我没有从Activity2传递数据 -    - > Activity3

立即

  

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

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

周期必须是::

  

活动1 - 至 - - - >活动2-至 - 。>活动3 - 至 - - >   活性2


  • 如何实现这个目标?
  • 我需要寻找什么概念

我希望我的描述清楚

3 个答案:

答案 0 :(得分:0)

我认为你从Activity3导航回Activity2时再次启动Activity2,这是错误的approch。您无需再次启动Activity2。只需按下Activity3中的后退按钮,你的Activity2就会再次出现在前台,它不会再次调用onCreate方法

答案 1 :(得分:0)

  1. 活动完全负责在onPause()中保存其状态并在onCreate()中恢复该状态。对于片段也是如此。

  2. 如果活动2要求活动3使用startActivityForResult()执行某项操作,那么,当活动3完成时,A将在其onActivityResult()中收到这些结果。

  3. 所有新开始的活动都会构建为任务堆栈。新活动完成后,屏幕下方的旧活动就会显示。

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

答案 2 :(得分:0)

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

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

  

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