SingleTask和FLAG_ACTIVITY_CLEAR_TOP之间的区别

时间:2016-07-12 16:34:12

标签: android android-intent

我试图理解SingleTask和FLAG_ACTIVITY_CLEAR_TOP之间的区别。似乎两者都以相同的方式工作。 前 - 我创建了活动A - > B - > c - > D - > E C的启动模式是SingleTask。 现在如果我从E打开C然后在背面按下我得到A - > B - > C 当我使用FLAG_ACTIVITY_CLEAR_TOP从E启动C时,会发生同样的事情。 不确定这两者之间有什么区别。

2 个答案:

答案 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个任务。