我试图理解SingleTask和FLAG_ACTIVITY_CLEAR_TOP之间的区别。似乎两者都以相同的方式工作。 前 - 我创建了活动A - > B - > c - > D - > E C的启动模式是SingleTask。 现在如果我从E打开C然后在背面按下我得到A - > B - > C 当我使用FLAG_ACTIVITY_CLEAR_TOP从E启动C时,会发生同样的事情。 不确定这两者之间有什么区别。
答案 0 :(得分: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
更详细的解释我写了here
答案 1 :(得分:0)
如果设置launchMode="singleTask"
但未在taskAffinity
上设置<activity>
,则会忽略启动模式。这就是你认为行为没有区别的原因。
如果您在launchMode="singleTask"
上设置taskAffinity=""
和C
然后拥有此任务堆栈:A-&gt; B然后B启动C,您将最终完成2个单独的任务:一个任务有A-> B,另一个任务包含C.如果您按下HOME按钮,您将在最近的任务列表中看到应用程序的2个任务。