java - 在从通知开始另一个活动之前完成一个活动
问题描述
我已经在我的 Android 应用程序中实现了 OneSignal 推送通知。我会发送带有 URL 的推送通知作为附加到它们的有效负载。该 URL 发送一个可以由我的应用程序或浏览器的另一个活动打开的意图。因此,当我的应用程序的某些活动处于前台并且我选择在我的应用程序中打开通知时,我的应用程序有 2 个实例。因此,即使用户在现在最顶部的活动中点击退出,已经打开的活动仍然存在。基本上,用户必须从我的应用程序中退出两次(如果这种情况继续发生,可能还会退出更多次)。
那么,当用户点击通知(并选择在我的应用程序而不是浏览器中打开它)然后继续时,有什么方法可以完成前台 Activity 吗?
另外,我尝试了所有的启动模式:normal
、和singleTop
,都产生了它们设计的结果,但是没有一个适合我的情况。singleTask
singleInstance
我不知道我应该在这里包含哪些代码。
如果无法做到这一点,有没有办法将我的应用程序的所有活动(无论它们从哪里启动)启动到同一个实例中?
解决方案
为此,您必须使用这样的活动标志从通知开始活动
yourintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
它将清除前台活动实例并在顶部创建您的新活动实例。
推荐阅读
- python - 读数计数器
- swiftui - 如何防止 Text 扩展 VStack 的宽度
- python - 为什么pyparsing的可选总是返回一个列表
- python - Tkinter 在定义的坐标处删除所有移动对象
- python - 关于 Python 中的矩阵向量运算
- woocommerce - 在客户处理订单php中的Woocommerce BACS Bankdetails之间添加文本
- rust - 当借用在方法调用后面时,如何借用两个不相交的字段?
- python - pandas groupby 然后按日期过滤以获得平均值
- c - 比较两个双打,看看它们是否相同 NaN
- python - 从图 matplotlib 返回 blit-able numpy 数组