FLAG_ACTIVITY_CLEAR_TOP funktioniert nicht wie erwartet

Ich habe 4 Aktivitäten A, B, C, D, E mit jeweils als @ deklarieandroid:launchMode="singleInstance" und ein WesenparentActivity von B und B als Elternaktivität von C im Manifest.

Now Benutzer navigierte zu E wie folgt: A> B> C> D> E. Und ich habe eine Schaltfläche in E mit dem folgenden onClickListener

    Intent intent = new Intent(E.this, C.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

Was ich brauche (Auch laut Dokumentation, wenn ich es richtig verstanden habe, sollte dies passieren)

Aktivitäten D und E sollten vom Stapel gelöscht werdenAktivität C sollte mit dem Empfang der Absicht fortgesetzt werden (da singleInstance festgelegt ist, wird es nicht neu erstellt).

Ich möchte diesen Stack: C | B | EI

Was ist los

Aktivität C wird fortgesetzt und empfängt die AbsichtAktivitäten D und E sindNICH vom Stapel gelöscht. Ich kann immer wieder auf die Schaltfläche "Zurück" klicken, um E, D, B, A zu sehen.

Ich erhalte diesen Stack: C | E | D | B | EI

PS: Meine Frage ist sehr ähnlich zuDie Die dort gegebenen Antworten passen jedoch nicht zu dieser Frage. Einige Antworten, die ich dort und anderswo gefunden habe:

Ich kann das NEW_TASK-Flag nicht verwenden, da ich A, B im Stapel am Leben halten muss.Ich kann startActivityForResult () nicht für D verwenden und es dann beenden (), was tatsächlich ein Hack ist, da ich in E andere entscheidende Faktoren habe, Ich kann Aktivität D nicht beenden (), während ich die Absicht an E übergebe, und beende dann () E, während ich C drücke, was das Problem tatsächlich lösen würde. Aber wenn Sie die Taste "Zurück" auf "E" drücken, möchten Sie, dass Sie zu "D" und nicht zu "C" zurückkehren.Wenn ich auf E finish () versuche, sobald ichstartactivity(intent) Nach dem Setzen von Flags endet E, nicht jedoch D.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage