![](/img/trans.png)
[英]onActivityResult not working with android:launchMode=“singleTask”
[英]singleTask launchMode in android not working
所以,我有4个活动Activity Activity1
, Activity2
, Activity3
和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);
}
这里Activity2
launchMode被解析为singleTask。
然后我从Activity3
导航到Activity4
当我从Activity4
启动Activity2
,我相信它应该有像Backstack一样
任务A.
|活性2 |
|活动1 |
任务B.
| Activity4 |
| Activity3 |
而是将新的Activity2
实例添加到当前任务中
任务B.
|活性2 |
| Activity4 |
| Activity3 |
任务A.
|活性2 |
|活动1 |
请有人帮我理解这个吗?
Android将不会创建一个新的任务,除非taskAffinity
中的Activity
你都争相推出从不同taskAffinity
当前任务的。 taskAffinity
优先于其他任何东西。
如果你真的想要开始一个单独的任务,你需要调整Activity3
的taskAffinity
,如下所示:
<activity android:name=".Activity3"
android:taskAffinity=""/>
此外,即使使用launchMode="singleTask"
声明Activity4
,Android也不会为它创建新任务,除非它与其他活动具有不同的taskAffinity
。
请注意,为同一应用程序创建多个任务会产生很多副作用。 您应该为每个任务中的根Activity
提供uniqyue图标和唯一标签,否则当用户想要返回到您的应用时会感到困惑(他将无法确定哪个是正确的任务) )。 此外, taskReparenting
可能会发生,意外地将活动从一个任务移动到另一个任务。 这是非常复杂的东西,大多数开发人员并不完全理解它,因此弄错了。
此外,使用FLAG_ACTIVITY_MULTIPLE_TASK
肯定是错误的。 需要使用它的唯一类型的应用程序是启动器。 如果您使用相同的Activity
启动多个任务,您将永远无法以编程方式返回到特定的任务,并且会完全混淆您的用户。 这绝对不是你想要的。
在大多数情况下,您不需要多个任务,它通常会导致比解决的问题更多的问题。 请解释为什么您认为自己需要多项任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.