首页 > 解决方案 > 在显式尝试的同时启动隐式意图并完成活动

问题描述

在我的应用程序中,经过身份验证的用户可用的选项之一是删除他们的帐户。当他们选择这个选项时,我想做三件事:

  1. 发起访问网站的隐含意图,例如进行调查或其他事情
  2. 启动一个明确的意图去应用程序的介绍/启动活动
  3. 完成当前活动

这是“删除帐户”按钮的点击处理程序:

val intent1 = Intent(Intent.ACTION_VIEW, "http://...")
startActivity(intent1)

val intent2 = Intent(this, IntroActivity::class.java)
intent2.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent2)
finish()

实际发生的是 intro/splash 活动开始,当前活动结束,但浏览器没有启动。我不知道这些标志对于明确的意图是否真的必要。

如果我在点击处理程序中颠倒事件的顺序,它似乎可以在硬件电话上工作,但由于某种原因不能在模拟器中工作:

val intent2 = Intent(this, IntroActivity::class.java)
intent2.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent2)
finish()

val intent1 = Intent(Intent.ACTION_VIEW, "http://...")
startActivity(intent1)

我的问题是双重的:为什么会这样,正确的做法是什么?

标签: androidandroid-intent

解决方案


您不能同时启动 2 个意图。其中一个优先,另一个被丢弃(我不确定哪个被忽略在版本之间是否一致,所以我不会在那里发表评论)。您需要启动查询/调查,然后启动下一个意图作为响应。或者启动你的主屏幕,告诉它然后启动浏览器(所以你注销,回到主页,然后浏览器启动)。您不能将其作为 2 个直接的 startActivity 调用来执行。


推荐阅读