情况如下。 A是应用程序启动的第一个活动。
给出A - > B,如果我呼叫活动F,它变成A - > F清算B.
然而,存在诸如从A调用F的情况 - > B - > C.它应该再次解析为A - > F.因此,我认为FLAG_ACTIVITY_NO_HISTORY不起作用。
修改: 澄清 结构就像,
A(发布)
B D F(第2级,A - > B,A - > D,或A - > F)
C E(第3级,A - > B - > C或A - > D - > E)
我该如何做到这一点?
答案 0 :(得分:1)
当您在A-> B并想要启动F时,在B上调用finish()然后在startActivity(F)上调用。然后你的背书将是A-> F。
如果您的堆叠较大(A-> B-> C)并且您希望它变为A-> F,则可以使用Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK将任务带回A,然后从根调用您需要的任何内容。
像这样的东西
class A {
public void onStart(){
Intent intent = getIntent();
if(intent != null && intent.contains(EXTRA_INVOKE)){
startActivity(Class.forName(intent.getExtra(EXTRA_INVOKE)));
}
}
public static void restoreStackTo(Context context, Class<? extends Activity> clazz){
Intent intent = new Intent(context, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(EXTRA_INVOKE, clazz.toString());
startActivity(intent);
}
}
并将其用作
A.restoreStackTo(F.class)
当堆栈是,例如,A-> B-> C时,来自C的