所以,我有 4 项活动 活动Activity1
, Activity2
, Activity3
and Activity4
。我从Activity1
然后在某个事件中我开始Activity2
然后在某个事件上Activity2
我开始Activity3
作为一个新任务
public void onClick(View v) {
Intent intent = new Intent(Activity2.this, Activity3.class);
intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
Here Activity2
launchMode 被声明为 singleTask。
然后我从Activity3
to Activity4
当我开始时Activity2
from Activity4
我相信它应该有像这样的backstack
Task A
|活动2|
|活动1|
Task B
|活动4|
|活动3|
as shown in image below
而是新的实例Activity2
添加到当前任务中
Task B
|活动2|
|活动4|
|活动3|
Task A
|活动2|
|活动1|
有人可以帮我理解这一点吗?
Android 不会创建新任务,除非taskAffinity
of the Activity
您尝试启动的启动与taskAffinity
当前任务的。taskAffinity
优先于其他任何事情。
如果您确实想开始一项单独的任务,则需要调整taskAffinity
of the Activity3
像这样:
<activity android:name=".Activity3"
android:taskAffinity=""/>
另外,尽管Activity4
声明为launchMode="singleTask"
,Android不会为其创建新任务,除非有不同的任务taskAffinity
来自其他活动。
请注意,为同一应用程序创建多个任务会产生很多副作用。您应该为根提供一个 uniqyue 图标和一个唯一标签Activity
在每个任务中,否则当用户想要返回到您的应用程序时,他会感到困惑(他将无法确定各个任务中哪一个是正确的)。还,taskReparenting
可能会发生意外地将活动从一项任务转移到另一项任务的情况。这些都是非常复杂的东西,大多数开发人员并不完全理解它,因此会出错。
另外,使用FLAG_ACTIVITY_MULTIPLE_TASK
肯定是错误的。唯一需要使用它的应用程序类型是启动器。如果您使用相同的任务启动多个任务Activity
在其中,您将永远无法以编程方式返回到特定的一个,并且将完全迷惑您的用户。这绝对不是你想要的。
在大多数情况下,您不需要多个任务,它通常会导致比它解决的问题更多的问题。请解释为什么您认为您需要多项任务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)