Android FLAG_ACTIVITY_NEW_TASK被忽略

kin*_*ton 3 android task android-activity

是否存在忽略FLAG_ACTIVITY_NEW_TASK的情况?从服务我开始一个具有设置该标志的意图的活动,当主要活动在后台时,我期望在新任务中看到新活动,所以我希望当我再次在后台看到该应用程序时关闭新活动.它没有发生,主要活动显示出来.

仅仅为了测试我尝试将主要活动设置为singleInstance,在这种情况下它可以工作.我不想将主要活动设置为singleInstance.

你知道什么时候会发生这种情况吗?

我应该补充一点,我在所有设备上都看到了这种行为,所以看起来它应该是应该工作的方式,而不是设备特定的问题.

kin*_*ton 6

我修复了它为第二个活动设置了不同的亲和力.问题是有关FLAG_ACTIVITY_NEW_TASK标志的文档说明:

如果设置,此活动将成为此历史堆栈上新任务的开始

但这是误导性的,因为听起来框架将始终创建一个新任务,而当从服务启动活动时,情况并非如此.

这是有关活动的taskaffinity属性的文档:

android:taskAffinity活动具有亲和力的任务.具有相同亲和力的活动在概念上属于同一任务(从用户的角度来看属于相同的"应用程序").任务的亲和力由其根活动的亲和力决定.亲和性决定了两件事 - 活动重新定位的任务(请参阅allowTaskReparenting属性)以及在使用FLAG_ACTIVITY_NEW_TASK标志启动活动时将容纳活动的任务.

因此,如果从活动中调用startActivity,则会启动新任务,但如果从服务启动它,则框架会将活动附加到具有相同关联的任务(如果存在,则顶级活动不是singleInstance