【问题标题】:Design pattern on navigating between the activities in androidandroid中活动之间导航的设计模式
【发布时间】:2013-08-24 23:38:28
【问题描述】:

你好

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

  • 此应用程序中的导航如下所示::

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

但是这样做 ::

我传递的数据来自

Activity1 - -> Activity 2- -> 我没有从Activity2传递数据 - - > 活动3

现在

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

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

循环必须是 ::

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


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

我希望我的描述很清楚

【问题讨论】:

    标签: android


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      1. 一个活动完全负责在onPause() 中保存它的状态,并在onCreate() 中恢复它。片段也是如此。

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-25
          • 1970-01-01
          相关资源
          最近更新 更多