【发布时间】:2019-07-06 04:19:58
【问题描述】:
我有一个活动,如果应用收到推送通知,就会调用它。活动以FLAG_ACTIVITY_NEW_TASK 和FLAG_ACTIVITY_CLEAR_TOP 开始。活动,我们称之为“A”,显示 UI 并在一段时间后完成。在这一点上,活动堆栈有问题。
场景:
- 应用程序在后台运行另一个活动“B”
- 然后应用收到推送通知并启动Activity A。
- 相关事情完成后,应用完成Activity A
- 然后返回到 Activity B 并停留在前台,即使应用在收到推送通知之前处于后台。
经过调试,发现系统在完成Activity A后调用了Activity B的onResume方法。
如果应用程序从后台启动,我怎样才能让应用程序保持在后台?我应该更改活动 A 的意图标志吗?
【问题讨论】:
-
不这么认为。我不是在寻找获取主页键或通过其他意图发送应用背景。
-
好吧,我不确定它是否会起作用,因为我从未尝试过,但是您是否尝试过更改为 FLAG_NEW_TASK 和 FLAG_CLEAR_TASK?第一个将活动创建为新任务(即使您在后台已经有另一个活动堆栈),第二个销毁前一个堆栈。
-
你试过
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); -
@RicardoCosteira 添加 FLAG_CLEAR_TASK 标志会将应用程序发送到后台,但问题是应用程序在点击最近的应用程序屏幕后无法继续应用程序的最近活动。完成活动 A 并从最近的应用屏幕恢复应用后,应用会显示初始屏幕。
标签: android android-intent intentfilter back-stack activity-stack