2012-04-24 177 views
1

有没有FLAG_ACTIVITY_NEW_TASK被忽略的情况?从服务开始,我开始一个活动,其目的是设置该标志,并且当主要活动在后台时,我期望在新任务中看到新活动,所以我希望当我在后台看到该应用程序时关闭新的活动。 它不会发生,并显示主要活动。Android FLAG_ACTIVITY_NEW_TASK被忽略

只是为了测试,我试图将主要活动设置为singleInstance,在这种情况下,它的工作原理。虽然我不想将主要活动设置为singleInstance。

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

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

回答

2

我修复它为第二个活动设置不同的亲和力。问题是,关于FLAG_ACTIVITY_NEW_TASK标志状态的文档:

如果设置,这个活动将成为这一历史堆栈

上了一个新任务的开始,但是这是一个误导,因为它听起来框架将始终创建一项新任务,并且在从服务启动活动时这不是事实。

这是关于一个活动的taskaffinity属性的文档:

安卓taskAffinity 该活动具有亲和力的任务。具有相同亲和力的活动在概念上属于相同的任务(从用户的角度来看属于相同的“应用程序”)。任务的亲和力取决于其根活动的亲和力。 亲和性决定了两件事 - 活动被重新授予的任务(请参阅allowTaskReparenting属性)以及在使用FLAG_ACTIVITY_NEW_TASK标志启动时将包含该活动的任务。

那么会发生什么情况是,如果你调用从活动的startActivity新任务已启动,但如果从服务启动,该框架将活动连接到一个任务具有相同的亲和力,如果任何与存在不是单一实例的顶级活动

+0

还有一个正在启动的活动是singleInstance或singleTask。 – ethan 2012-04-25 15:54:59

+0

是的,就像我写的那是我的第一份工作表 – kingston 2012-04-26 18:03:14