1

我的理解是,如果一个singleTask活动已经存在,不会再次创建,但它的onNewIntent将被调用。singleTask从服务调用的活动不触发onNewIntent

实际上,当我从另一个Activity启动一个Intent时,会发生这种情况,但不是来自服务。此外,我注意到,如果我将我的Activity声明为singleInstance(即在这种情况下,即使从服务onNewIntent调用),也不会发生这种情况,但它也涉及我不想要的堆栈并发症。

我不喜欢的是,如果我有一个singleTask活动的实例正在运行,onNewIntent将始终被调用,并且它以一种活动而不是服务的方式工作。

为什么会这样,我应该怎么做才能保持我的背部堆栈完好无损,并将我现有的活动从我的服务中带到最高层?

注意:当我打电话给我的singleTask活动时,我确实有FLAG_ACTIVITY_NEW_TASK。

谢谢!

回答

0

我测试过并且从服务启动时调用onNewIntent。我认为会发生什么是你的任务被系统杀死了,因此当你从服务启动时,一个新的任务被创建,因此onNewIntent不会被调用。

+0

谢谢,但我确实已经有了这个标记......我将它添加到描述中: ) – 2013-05-03 01:11:37

+0

在我看来,singleTask会在从活动中调用时清除顶部。我测试使用一个singleTask和B一个正常的活动。 A - > B - > A当我按回我期望B但我得到了我的启动活动。从商业智能推出A正常,也与FLAG_ACTIVITY_NEW_TASK – 2013-05-03 01:31:05

+0

它确实清除了顶部,但它通过重新创建该活动而不是将其带回顶部,并且只有在singleTask和“从服务调用”我组合不会... – 2013-05-03 15:38:51

0

所以看来我可以通过不让我的服务回答HOME意图来解决我的问题。

我应该提到:我的服务获取家庭意图,然后启动我想看到的实际活动。我找不到一种方法让它不擦除该活动的前一个实例,而不使用singleInstance。

因此,从现在开始,活动本身处理HOME事件似乎阻止了重新创建(可能是因为服务在获得家庭意图时正在销毁所有其他事物)。我不是100%确定的,我得到了所有这些内部工作,但似乎很好的解决方案。