Ich versuche, den Unterschied zwischen SingleTask und FLAG_ACTIVITY_CLEAR_TOP zu verstehen. Es scheint, dass beide auf die gleiche Weise arbeiten. Ex- Ich habe Aktivität A -> B -> c -> D -> E erstellt, wobei der Startmodus von C SingleTask ist. Wenn ich nun C von E öffne und dann zurück drücke, bekomme ich A -> B -> c Dasselbe passiert, wenn ich C von E mit FLAG_ACTIVITY_CLEAR_TOP starte. Nicht sicher, was der Unterschied zwischen diesen beiden ist.Unterschied zwischen SingleTask und FLAG_ACTIVITY_CLEAR_TOP
0
A
Antwort
1
Assume A , B , C , D , E , F are the Activities
**launchMode=”singleTask”**
We are adding launchMode=”singleTask” in C.
Example one:
Previous State of Activity Stack
D
C
B
A
Start C
Final State of Activity Stack
C -old instance gets extras data through onNewIntent(Intent intent);
B
A
info - D gets destroyed
Example Two:
Previous State of Activity Stack
B
A
Start C
Final State of Activity Stack
C -starts as usual.
B
A
**FLAG_CLEAR_TOP**
We are starting B from D with flag
Previous State of Activity Stack
D
C
B
A
Final State of Activity Stack
B -old instance gets extras data through onNewIntent(Intent intent);
A
info -All others will get destroyed
Genauer Erklärung habe ich here geschrieben
0
Wenn Sie launchMode="singleTask"
gesetzt, aber auch nicht setzen taskAffinity
auf dem <activity>
dann der Startmodus ignoriert. Dies ist der Grund, dass Sie keinen Unterschied im Verhalten sehen.
Wenn Sie launchMode="singleTask"
und taskAffinity=""
auf C
gesetzt und dann diese Aufgabe Stack: A-> B und dann B startet C, werden Sie mit 2 getrennten Aufgaben am Ende: Eine Aufgabe hat A-> B und die andere Aufgabe enthält C. Wenn Sie dann die HOME-Taste drücken würden, würden Sie zwei Aufgaben Ihrer App in der Liste der letzten Aufgaben sehen.
Im Falle von FLAG_CLEAR_TOP werden alle Aktivitäten nicht zerstört. Nur D und C werden zerstört. Endgültiger Zustand ist B A – swati
@swati korrigiert –
Wie Sie in beiden Szenarien sehen können, wird die Aktivität zwischen der Instanz zerstört. Also kein Unterschied. – swati