从其他应用程序或浏览器重定向后创建新的Activity实例

时间:2013-04-11 16:00:11

标签: android android-intent android-activity

我遇到了从浏览器直接获取活动实例时遇到的问题 问题是: -
活动A调用浏览器来执行标记 - FLAG_ACITIVTY_NEW_TASK的一些操作。 浏览器使用指定的活动A的URL方案重定向回活动A. 重定向后,活动A检查来自意图的令牌和其他参数。 活动A将其意图重置为setIntent()的默认值。
问题: -
设置意图后,如果我调用getIntent(),则在相同活动上,它给出了浏览器调用活动A的意图。 再次按下后,再次看到我之前设定的意图的活动A实例 即 堆栈看起来像 A-Browser活动-A'

我认为A是创建活动A的新实例,但实际更改会反映在活动A中。 当我显示警报对话时出现同样的问题。 当从后面的堆栈中清除A'时,我会看到活动A中的警报对话框,我在从浏览器重定向后显示该对话框。

首先,我不希望创建新实例(A')。

我检查了方案,将活动A的launchMode设置为signleTop但行为相同。

感谢您的投入。

1 个答案:

答案 0 :(得分:0)

很抱歉发布这么晚了, 这是解决方案:

您将活动的启动模式设为:singleTask 通过这种方式,如果已经存活,框架将避免为同一活动重新创建一个新实例,这样,您将启动活动实例并将接收onNewIntent() 回调而不是onResume()。你的逻辑在onNewIntent()

希望这有帮助! 谢谢。