我想问类似的问题:
Go back to previous screen without creating new instance
但是我不希望Activity A经历onCreate回调,我想在同一状态下返回上一个实例。如何在不调用多个finish()的情况下实现它?
答案 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将再次获得恢复而不是创建。