1

我的理解是,如果一个 singleTask 活动已经存在,则不会再次创建它,但会调用它的 onNewIntent。

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

此外,我注意到如果我将我的 Activity 声明为 singleInstance(即在这种情况下,即使从服务 onNewIntent 确实被调用)也不会发生这种情况,但它也涉及我不想要的回栈复杂性。

我的理解是 onNewIntent 总是会被调用,如果我有一个正在运行的 singleTask Activity 的实例,并且它确实从 Activity 但不是服务以这种方式工作。

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

注意:当我调用我的 singleTask 活动时,我确实有 FLAG_ACTIVITY_NEW_TASK。

谢谢!

4

3 回答 3

0

I tested and onNewIntent is called when launched from a service. I think what happens is your task was killed by the system, thus when you launched from the service a new task is created and thus onNewIntent is not called.

于 2013-05-03T01:01:55.467 回答
0

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

于 2014-10-03T10:29:08.890 回答
0

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

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

因此,到目前为止,让 Activity 本身处理 HOME 事件似乎可以防止重新创建(可能是因为该服务在获取 home 意图时破坏了其他所有内容)。我不是 100% 确定我得到了这个的所有内部工作,但它似乎是一个足够好的解决方案。

于 2013-05-03T18:06:31.433 回答