在Up Navigation上销毁子活动

时间:2015-06-29 03:05:41

标签: android android-intent navigation back

我有3个活动:A,B和C,代表3页的网络表单。 A是B的父活动,B是C的父活动。我已使用staging正确实现了向上导航。当我有信息是A,B中的信息和C中的信息时,我在活动C中点击回来,并显示来自活动B的信息。然后我再次点击回来,显示来自活动a的信息。

然后当我从活动A转到活动B时出现问题。当然,我在第二页上保存的信息我希望在那里,但它重新创建活动B并且所有信息都丢失了。如何使活动B恢复,不要让活动被破坏。我在文档中读到,当使用向上导航时,当前活动被销毁并且后台堆栈中的活动被恢复。我不知道如何实现这一点。

非常感谢任何帮助。

编辑:更直观地表达我想要的内容。这来自文档:

enter image description here

如图所示,当当前活动为活动3时按下后退时,活动3将被销毁。我不希望这种情况发生。可以保存活动3,以便以后可以恢复吗?

1 个答案:

答案 0 :(得分:1)

来自docs

的解决方案
  

同样,如果您向上导航到当前堆栈上的活动,则行为由父活动的启动模式确定。如果父活动具有启动模式singleTop(或up intent包含FLAG_ACTIVITY_CLEAR_TOP),则父项将被置于堆栈顶部,并保留其状态。导航意图由父活动的onNewIntent()方法接收。如果父活动具有启动模式标准(并且向上意图不包含FLAG_ACTIVITY_CLEAR_TOP),则当前活动及其父活动都将从堆栈弹出,并且创建父活动的新实例以接收导航意图。

回答您的整体问题

你从A转到B;然后从B返回A,您希望保留B吗?返回B继续执行任务的概率是多少 - 因此它将被杀死并重新启动。

要提供某种解决方案,请使用已弃用的ActivityGroup或(我不确定这是否有效) - 将launchmode="singleTop"更改为singleInstance并覆盖其onBackPressed() }启动一个新的Activity调用引发它的Activity - 你可以得到getIntent()引发它的Activity ..这里的逻辑是singleInstance驻留在一个不同的Task中,并且不允许其中的其他Activity,所以它杀死它的条件,它不会死,当一个新的活动被引发,并且因为你的接收活动有它的lauchmode和它的根你在那里没有问题。 overBiding onBackPressed是为了防止正常流动..

希望这次有所帮助,但整体