我想提出一个类似的问题:如何在不创建新实例的情况下返回到上一个屏幕,但我不希望 Activity A 经历 onCreate 回调,我想返回到同一状态下的上一个实例。如何做到这一点而不调用多个 finish()?以下是相关问题的链接:Go back to previous screen without creating new instance。
在应用程序导航时,无需finish()活动。相反,您可以维护活动返回堆栈并仍然实现目标。假设您有以下4个活动:
A --> B --> C --> D
其中D是最顶层的活动,A是根活动。如果您要返回到活动B,则需要执行两个操作以避免触发B的onCreate方法。
1.) 将B设置为"SingleTask"活动。您可以在Android清单中执行此操作。简而言之,这意味着该任务中只会存在一个B的“实例”。如果在调用B时已经运行,则它将被带到前台。下面是如何执行此操作:
<activity
android:name=".ui.MyActivity"
android:launchMode="singleTask"/>
但您不只是想将B带到最前面。您希望“回退”到B,以便您的堆栈看起来像
A--> B
2.) 将此标记添加到启动B的意图中。这可以确保C和D被删除。
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
现在当'D'调用新的Intent到B时,B将被恢复,并且C和D将被移除。B不会被重新创建,它只会调用onNewIntent。