返回Activity而不重新创建(不调用onCreate())

时间:2016-04-13 13:19:40

标签: android android-lifecycle android-navigation

我想问类似的问题:

Go back to previous screen without creating new instance

但是我不希望Activity A经历onCreate回调,我想在同一状态下返回上一个实例。如何在不调用多个finish()的情况下实现它?

2 个答案:

答案 0 :(得分:6)

当您浏览应用程序时,无需完成()活动。相反,您可以维护您的Activity back-stack并仍然实现您的目标。我们假设你有4个这样的活动:

A - > B - > C - > D

其中D是最顶层的活动,A是根活动。如果你'退回''对于活动B,那么你需要做两件事以避免使用B&#39s onCreate方法。

1。)让B成为" SingleTask "活动。您可以在Android Manifest中执行此操作。简而言之,这意味着只有一个实例' B将永远存在于此任务中。如果B在被呼叫时已经在运行,那么它将被简单地带到前面。这就是你如何做到的。

  <activity
        android:name=".ui.MyActivity"
        android:launchMode="singleTask"/>

但是你不想把B带到前面。你想要回归&#39;到B使你的堆栈看起来像

A - &GT; B

2。)将此标记添加到您的意图“开始”#39; B.这确保删除C和D.

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

现在当&#39; D&#39;将新的Intent调用到B,B将被恢复,C和D将被删除。 B将不会被重新创建,它只会调用onNewIntent。

答案 1 :(得分:0)

从A导航到B时没有完成活动A. 从B导航到C完成活动B. 从C导航到D完成活动C。

因此,从您导航到任何地方完成当前活动和活动A将再次获得恢复而不是创建。