我的理解是singleTask活动(如果它已经存在)不会再次创建,但它的onNewIntent将被调用。
事实上,当我从另一个Activity启动一个Intent而不是从一个服务启动Intent时会发生这种情况。
此外,我注意到如果我将我的Activity声明为singleInstance(即在这种情况下,甚至从onNewIntent服务中调用它)也不会发生这种情况,但它也涉及我不想要的后备栈并发症。
我的不受欢迎的是,如果我有一个运行的singleTask Activity实例,那么onNewIntent总会被调用,并且它确实从Activity而不是服务工作。
为什么会这样,我应该怎样做才能保持我的后台堆栈完整无缺,只需将我现有的活动从我的服务中移到顶端?
注意:当我调用singleTask Activity时,我确实有FLAG_ACTIVITY_NEW_TASK。
谢谢!
答案 0 :(得分:0)
我测试过并且从服务启动时调用onNewIntent。我认为发生的事情是您的任务被系统杀死,因此当您从服务启动时,会创建一个新任务,因此不会调用onNewIntent。
答案 1 :(得分:0)
所以我似乎可以通过不让我的服务回答HOME意图来解决我的问题。
我应该提到:我的服务获得了家庭意图,然后启动我想要查看的实际活动。我没有办法让它不擦除该活动的前一个实例,而不使用singleInstance。
因此,现在让活动本身处理HOME事件似乎阻止了重新创建(可能是因为该服务在获得家庭意图时正在破坏其他所有内容)。我不是百分百肯定我得到了所有内部工作,但它似乎很好解决。
答案 2 :(得分:0)
我在尝试解决类似问题时看到了这个问题。我在另一个线程中回答了我对这个问题的解决方案,也许相同的响应在这个线程中很有用: Intent with old extra in onCreate() for singleTask Activity