我开发了一个应用程序,它具有从服务器接收通知的功能。
问题是,当我点击收到的通知时,会打开我的应用程序本身的新实例。
这种行为没问题,如果我的应用程序不在前台,但如果是,我尝试打开通知,则会创建我的应用程序的新实例,从而重叠先前打开的应用程序的实例。
我不希望这种情况发生,所以当我点击通知时,如果我的应用程序位于前台,我必须关闭它并打开一个新实例。
我应该如何覆盖通知的点击事件?
答案 0 :(得分:5)
你需要对IntentFlags做一些魔术。 尝试为你的意图添加不同的标志。
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_NEW_TASK);
答案 1 :(得分:1)
您可以在意图中添加标记,同时将意图设置为待处理意图,如下所示:
Intent notificationIntent = new Intent(context, activity.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
答案 2 :(得分:0)
如果您在意图中使用操作MAIN和类别LAUNCHER,它将恢复您现有的实例。它与从启动器或上次使用的应用程序启动应用程序相同。可能没有类别LAUNCHER。
答案 3 :(得分:-1)
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
通过这种方式,您将清除最后一个实例以及所有活动,并启动应用程序的新实例。