Wie Aktivität verwalten stack?
Wenn mein stack ist in dieser situation:
A->B->C
wenn ich start-D-Aktivität, ich möchte, dass die Aktivität Stapel wird:
A->D
Beachten Sie, dass Aktivität C ist ein dialog.
Du musst angemeldet sein, um einen Kommentar abzugeben.
hier sind die Schritte, die die benötigten:
fromActivityC
gebündelt mit der Absicht und der FlaggeFLAG_ACTIVITY_CLEAR_TOP
gesetzt werden .Nun im erstellen der Aktivität Einen Scheck für das Boolesche "fromActivityC" erste und falls vorhanden, starten Sie die Aktivität D sonst dem normalen Ablauf fortgesetzt.
Einem kleinen workaround, aber Hoffe es hilft
Gibt es mehrere Wege, zum entfernen einer Aktivität aus dem Stapel oder verhindern, dass Sie gestapelt werden :
Entfernen Ihre Aktivitäten vom Stapel , rufen Sie einfach
finish()
finden Sie hier.Können Sie auch implementieren, die in Ihrem manifest die Eigenschaft : android:noHistory="true", die verhindern, dass eine Aktivität gestapelt werden.
Sehen, diese Frage noch genauer : Das entfernen einer Aktivität aus der Geschichte stack
Etwas hacky, aber Sie können beginnen, Aktivität Ein, während die clearing-stack, dann start-Aktivität D.
Aktivität Eine könnte erscheinen für einen moment, bevor er verschwand, obwohl
Könnten Sie versuchen, finishing
ActivityB
beim startenActivityC
und das gleiche inActivityC
beim Start von A.Dein code würde wie folgt Aussehen:
auf Rückruf von C , geben Sie eine Nachricht Ein, und starten Sie Ihren D aus Acall finish , dies wird beenden, B und C (denn C ist abgesehen von B).
hier ist eine bessere Lösung nicht in Abhängigkeit von der Bewertung der
Intent
InhaltA
:verwenden Sie das flag
FLAG_ACTIVITY_TASK_ON_HOME
sollten Sie auch einen Blick auf die anderen Flaggen Android Intent