我遇到了从浏览器直接获取活动实例时遇到的问题
问题是: -
活动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但行为相同。
感谢您的投入。
答案 0 :(得分:0)
很抱歉发布这么晚了, 这是解决方案:
您将活动的启动模式设为:singleTask 通过这种方式,如果已经存活,框架将避免为同一活动重新创建一个新实例,这样,您将启动活动实例并将接收onNewIntent() 回调而不是onResume()。你的逻辑在onNewIntent()
希望这有帮助! 谢谢。