单击通知时保留 activity 堆栈

Preserve activity stack when notification is clicked

仅使用显示 GCM 通知的默认方式(而不使用 onMessageReceived() 和 GcmListenerService),是否可以让 activity 堆栈保持原样,并在以下情况下将应用程序带到前台触及通知?我希望获得与触摸应用程序图标时相同的行为。目前,每次触摸通知时都会启动一个新的 activity。

编辑:

详细情况如下。我已经阅读了该文档,但我仍然无法获得所需的行为。假设我的堆栈如下所示:

Activity B
Activity A

Activity B 目前在最上面并且处于活动状态。当用户再次按下圆圈按钮然后应用程序图标时,相同的堆栈将被激活(恢复)。

现在,当我在这种情况下点击通知时,我得到了:

Activity A
Activity B
Activity A

但我只想保留这个:

Activity B
Activity A

我已经尝试了所有启动模式变体,但都没有成功。

这与您的 activity 设置方式有关。例如,您可以在清单中将 activity 设为 singleTop activity:

<activity
...
    android:launchMode="singleTop"
...
 />

这样,当这个 activity 有一个新的 Intent 时,Android OS 不会创建您的 activity 的新实例,而是拉起现有实例并通过 onNewIntent(Intent) 函数传递新的 Intent(要使其工作,您应该在 activity 中覆盖该方法)。

有更多方法可以做到这一点,请查看 documentation("Using the manifest file" 部分)以了解最适合您的情况的方法。