从Service调用的singleTask Activity不会触发onNewIntent

时间:2013-05-03 00:46:11

标签: android android-intent android-activity android-service android-lifecycle

我的理解是singleTask活动(如果它已经存在)不会再次创建,但它的onNewIntent将被调用。

事实上,当我从另一个Activity启动一个Intent而不是从一个服务启动Intent时会发生这种情况。

此外,我注意到如果我将我的Activity声明为singleInstance(即在这种情况下,甚至从onNewIntent服务中调用它)也不会发生这种情况,但它也涉及我不想要的后备栈并发症。

我的不受欢迎的是,如果我有一个运行的singleTask Activity实例,那么onNewIntent总会被调用,并且它确实从Activity而不是服务工作。

为什么会这样,我应该怎样做才能保持我的后台堆栈完整无缺,只需将我现有的活动从我的服务中移到顶端?

注意:当我调用singleTask Activity时,我确实有FLAG_ACTIVITY_NEW_TASK。

谢谢!

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

我应该提到:我的服务获得了家庭意图,然后启动我想要查看的实际活动。我没有办法让它不擦除该活动的前一个实例,而不使用singleInstance。

因此,现在让活动本身处理HOME事件似乎阻止了重新创建(可能是因为该服务在获得家庭意图时正在破坏其他所有内容)。我不是百分百肯定我得到了所有内部工作,但它似乎很好解决。

答案 2 :(得分:0)

我在尝试解决类似问题时看到了这个问题。我在另一个线程中回答了我对这个问题的解决方案,也许相同的响应在这个线程中很有用: Intent with old extra in onCreate() for singleTask Activity