4

我开发了一个应用程序,它具有从服务器接收通知的功能。

问题是,当我单击收到的通知时,它会打开我的应用程序本身的一个新实例

这种行为是好的,如果我的应用程序不在前台,但如果是,并且我尝试打开通知,则会创建我的应用程序的新实例,从而与之前打开的应用程序实例重叠。

我不希望这种情况发生,所以当我点击通知时,如果我的应用程序在前台,我必须关闭它并打开一个新实例

我应该如何覆盖通知的点击事件?

4

4 回答 4

5

你需要用 IntentFlags 做一些魔术。尝试为您的意图添加不同的标志。

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_NEW_TASK);
于 2011-09-05T13:42:10.890 回答
1

您可以在意图中添加标志,同时将意图设置为待处理意图,如下所示:

Intent notificationIntent = new Intent(context, activity.class);
            notificationIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
            PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
于 2011-09-05T13:31:01.130 回答
0

如果您在意图中使用操作 MAIN 和类别 LAUNCHER,它将恢复您现有的实例。这与您从启动器或上次使用的应用程序启动应用程序相同。可能不需要类别 LAUNCHER。

于 2011-09-05T13:29:46.723 回答
-1
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

这样,您将清除最后一个实例以及所有活动并启动应用程序的新实例。

于 2015-06-17T13:01:04.773 回答