android - 在显式尝试的同时启动隐式意图并完成活动
问题描述
在我的应用程序中,经过身份验证的用户可用的选项之一是删除他们的帐户。当他们选择这个选项时,我想做三件事:
- 发起访问网站的隐含意图,例如进行调查或其他事情
- 启动一个明确的意图去应用程序的介绍/启动活动
- 完成当前活动
这是“删除帐户”按钮的点击处理程序:
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)
我的问题是双重的:为什么会这样,正确的做法是什么?
解决方案
您不能同时启动 2 个意图。其中一个优先,另一个被丢弃(我不确定哪个被忽略在版本之间是否一致,所以我不会在那里发表评论)。您需要启动查询/调查,然后启动下一个意图作为响应。或者启动你的主屏幕,告诉它然后启动浏览器(所以你注销,回到主页,然后浏览器启动)。您不能将其作为 2 个直接的 startActivity 调用来执行。
推荐阅读
- java - 为什么接口不能扩展迭代器?
- maven - Jenkins 抛出错误“也许您需要在项目配置中指定正确的 POM 文件路径?”
- android - 无法使用 Apache HttpClient
- python - 使用 pywinauto 卸载程序 (Windows)
- python - 如何根据字典对字符串进行分类?
- processor - 我们知道处理器在启动过程中会从 16 位实模式切换到 32 位保护模式,那么它什么时候切换到 64 位模式
- apache-spark - 读取文件时的 SPARK 分区/任务数
- reactjs - 如何在 React js 中做一个三元运算符
- java - 在 try/catch 之前初始化非空类型变量
- python - Python TypeError:“元组”对象不可调用