单击通知时保留 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" 部分)以了解最适合您的情况的方法。
仅使用显示 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" 部分)以了解最适合您的情况的方法。