I was/am having the same question actually.
After reading replies here on stackoverflow and doing some experiments, I believe that when a singleTask activity is launched while it's already in a background task, the system will kill all other activities at the top of the stack and resume the singleTask activity.
For sure, this is not what I got out of the documentation though.
Here is my theory:
Launch Modes: Activity A: singleTask , Activity B: standard
experiment 1
- Launch A ; stack: [A]
- Launch B from A; stack: [A|B]
- Press home; stack: [A|B]
- Launch A from launcher; Stack: [A] (onDestroy was called on B
before onResume() on A)
experiment 2
- Launch A ; stack: [A]
- Launch B from A; stack: [A|B]
- Launch A from B; stack: [A] (onDestroy was called on B
after onResume() on A)
In my case, I had to use android:alwaysRetainTaskState="true"
although this is not ideal as I do want the stack to be cleared after, say, 10 minutes as this recommendation makes sense:
If the user leaves a task for a long
time, the system clears the task of
all activities except the root
activity. When the user returns to the
task again, only the root activity is
restored. The system behaves this way,
because, after an extended amount of
time, users likely have abandoned what
they were doing before and are
returning to the task to begin
something new.
from the Tasks and Back Stack guide.
I hope this helps other people.