我假设您不想使用 Intent,因为每当您使用 Intent 移动到活动时,按 Back 键都会移动到上一个活动(活动 C)。在这种情况下,我建议您包含 FLAG_ACTIVITY_CLEAR_TOP 标志。它将破坏所有先前的活动,让您移动到活动 A。
Intent a = new Intent(this,A.class);
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(a);
或者,您可以尝试使用 FLAG_ACTIVITY_REORDER_TO_FRONT 标志,它将移动到活动 A 而不会清除任何活动。
或者,如果您不想创建新实例,那么
在AndroidManifest.xml中设置Activity的launchMode为singleInstance
希望这可以帮助。
或者
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' 向 B 调用新的 Intent 时,B 将被恢复,C 和 D 将被删除。B 不会被重新创建,它只会调用 onNewIntent。
或者
您使用 StartActivityForResult() 开始活动
并根据条件您在活动中设置 ResultCodes .. 像这样的东西..
GO_TO_ACT_A=1;GO_TO_ACT_B=2;
并在所有活动 onActivityResultMethod 检查结果代码..
if(resultCode==GO_TO_ACT_A){
finish(); //Assuming curently you are in Activity C and wanna go to Activity A
}