2016-07-12 8 views
0

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

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

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

+0

@swati korrigiert –

+0

Wie Sie in beiden Szenarien sehen können, wird die Aktivität zwischen der Instanz zerstört. Also kein Unterschied. – swati

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.