1

我创建了通知,当您单击通知时会执行 startActivity。这非常有效,尤其是当我的应用程序尚未启动时。

我遇到的问题是当我打开通知时,因为上一个活动保持打开状态。

我的意图是,当您单击通知以关闭当前应用程序时,这仅包含来自通知的新呼叫。

我已经尝试在“AndroidManifest”中显示“android:launch=”和 PendingIntents 上的标志,但我没有成功运行它。

有什么帮助吗?谢谢

编辑: 我的应用程序开始如下:

SplashScreen.class -> Main.class(是一个 TabActivity)

当我单击通知时,我执行以下操作:SplashScreen.class -> Main.class(是 TabActivity)

但是,如果我的应用程序已经启动并且我收到通知,我有:

新 - SplashScreen.class -> Main.class(是一个 TabActivity)(当前)OLDER。下面仍然在 Main.class 上方打开

4

1 回答 1

0

如果您需要在单击通知时打开 SplashScreen.class,请尝试创建如下意图:

Intent intent = new Intent(myContext, SplashScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

正如文档所说的 Intent.FLAG_ACTIVITY_CLEAR_TOP

如果设置,并且正在启动的活动已经在当前任务中运行,那么不会启动该活动的新实例,而是关闭它上面的所有其他活动,并且此 Intent 将被传递到(现在顶部)作为新意图的旧活动。

例如,考虑一个由以下活动组成的任务:A、B、C、D。如果 D 调用 startActivity() 的 Intent 解析为活动 B 的组件,则 C 和 D 将完成,B 接收给定的 Intent ,导致堆栈现在是:A,B。

上面示例中当前运行的活动 B 实例将在其 onNewIntent() 方法中接收您在此处启动的新意图,或者自身完成并使用新意图重新启动。如果它已声明其启动模式为“multiple”(默认)并且您没有在同一意图中设置 FLAG_ACTIVITY_SINGLE_TOP,那么它将完成并重新创建;对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将被传递到当前实例的 onNewIntent()。

因此,当您使用此标志启动 SplashScreen 活动时,如果它已经在堆栈上,它将被带到顶部,并且堆栈上它上面的所有其他活动都将被清除

于 2013-07-18T08:32:05.150 回答