Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 收到通知后重新启动应用程序_Android_Android Notifications - Fatal编程技术网

Android 收到通知后重新启动应用程序

Android 收到通知后重新启动应用程序,android,android-notifications,Android,Android Notifications,我开发了一个应用程序,它具有从服务器接收通知的功能 问题是,当我单击收到的通知时,它会打开我的应用程序本身的一个新实例 如果我的应用程序不在前台,但如果它在前台,并且我尝试打开通知,则会创建我的应用程序的新实例,从而与以前打开的应用程序实例重叠,则此行为是正常的 我不希望发生这种情况,因此当我单击通知(如果我的应用程序位于前台)时,我必须关闭该通知并打开一个新实例 如何覆盖通知的单击事件?如果在意图中使用action MAIN和category LAUNCHER,它将恢复现有实例。这与从启动器或

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

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

如果我的应用程序不在前台,但如果它在前台,并且我尝试打开通知,则会创建我的应用程序的新实例,从而与以前打开的应用程序实例重叠,则此行为是正常的

我不希望发生这种情况,因此当我单击通知(如果我的应用程序位于前台)时,我必须关闭该通知并打开一个新实例


如何覆盖通知的单击事件?

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

您可以在intent中添加标志,同时将intent设置为pending intent,如下所示:

Intent notificationIntent = new Intent(context, activity.class);
            notificationIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
            PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

你需要用意念来施展魔法。 尝试向您的意图添加不同的标志

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_NEW_TASK);

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

我遇到了完全相同的问题。现在,当我有几个活动实例在运行时,我将终止不可见的实例。这是可行的,但我很确定这根本不是最好的办法。@Shlublu-你能给我一点如何做到这一点的指导吗。Bcoz我在这里完全是空白。我想下面的链接可以帮助你@YashwanthKumar谢谢!安德罗,我建议先看看亚什万斯·库马尔的解决方案是否有效(看起来是这样),因为它更干净。@亚什万斯·库马尔:不,这没用。我在我的禁忌中使用它,在此之前我还有一个闪屏。因此,当我收到通知时,我会将其重定向到我的第一个选项卡。但我仍然可以看到我以前的实例被重叠了。不,这没有帮助。我在我的禁忌中使用它,在此之前我还有一个闪屏。因此,当我收到通知时,我会将其重定向到我的第一个选项卡。但我仍然可以看到我以前的实例被重叠。你可以在清单文件中将android:launchMode=“singleInstance”添加到你的活动标记中……问题是,在这种情况下,它像往常一样重叠,而且我的应用程序不会自动启动,这是客户不喜欢的。但是谢谢你的建议,兄弟。嘿,但这不是从服务器更新值。有什么想法吗?在创建pendingent时,将flags参数设置为pendingent.FLAG_UPDATE_CURRENT。然后将更新您的新值。请参阅此代码pendingent pintent=pendingent.getService(this,0,urintent,pendingent.FLAG_UPDATE_CURRENT);没错。我只是单独使用Intent.FLAG\u ACTIVITY\u CLEAR\u TOP。它解决了它。@AndroSelva你到底将如何解决它?我尝试了许多组合,甚至在AndroidManifiest活动中添加了“android:launchmode”,但无法通过点击关闭通知或替换打开的应用程序来启动新的计划。
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);