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

nrerum 发布于 2019-03-09 android 最后更新 2019-03-09 14:33 3 浏览

活动实例在从浏览器获取re-direct时会遇到问题。
问题是:

活动A调用浏览器来做一些标志--FLAG_ACITIVTY_NEW_TASK。 浏览器使用指定的活动A的URL方案重定向回活动A. 重定向后,活动A从意图中检查令牌和其他参数。 活动A通过setIntent()将其意图重置为默认。
问题: -
在设置intent之后,如果我调用getIntent(),则在Same activity上,它给出了浏览器调用Activity A的意图。 然后再次按下我之前看到的活动A实例。
即 堆栈看起来像 A浏览器活动-A' 我认为A是创建的活动A的新实例,但实际更改反映在活动A中 当我显示一个警报对话时,会出现同样的问题。 当从背面堆栈清除A'时,我看到在从浏览器重定向后显示的活动A中的提醒对话框。 首先,我不指望创建新实例(A')。 我将Activity A的launchMode设置为signleTop,但检查了相同的行为。 我感谢你的投入。

已邀请:

equi

赞同来自:

很抱歉发布这么晚, 以下是此解决方案: 你有活动的启动模式:singleTask 通过这种方式,如果已经存活,框架将避免为同一活动重新创建新的isntance,执行此操作将启动活动实例并将接收onNewIntent() 回调而不是onResume()。在onNewIntent()中有你的逻辑 希望这可以帮助 ! 谢谢 。