9

我创建了一个带有按钮的简单应用程序。单击它会触发通知,单击通知会启动同一应用程序的新实例。但是,我希望单击通知应该让我回到触发通知的应用程序实例。为此,我查阅了 Android 文档以获取FLAG_ACTIVITY_NEW_TASK标志-

使用此标志时,如果您现在正在启动的 Activity 已经在运行任务,则不会启动新的 Activity;相反,当前任务将简单地以其上次所处的状态被带到屏幕的前面。有关禁用此行为的标志,请参见 FLAG_ACTIVITY_MULTIPLE_TASK。

基于此,在创建传递给 PendingIntent 的意图时,我设置了这个标志。但是,单击通知仍会启动应用程序的新实例。

我究竟做错了什么 ?

4

3 回答 3

5

请记住,当您单击时NotificationContext意图正在启动。上下文的任务上没有 Activity(事实上,它将是一个空白任务)。

这导致运行相同的两个版本Activity(尽管仍然只有一个你的实例Application)。每个Activity都运行不同的Task.

如果您在任何堆栈中都不需要相同类型的重复活动,则可以在此处使用答案:

https://stackoverflow.com/a/2327027/726954

否则,有很多方法可以“修复”这个问题,包括单例变量和跟踪哪些活动处于运行状态的应用程序上下文方法。

您可能需要针对这些搜索和优化您的问题。

于 2013-04-08T15:01:05.517 回答
1

Android 中的任务是一个单独的用户工作流程。如果您有时会看到主屏幕,这通常意味着您开始一个新的。删除标志,它应该可以工作。如果没有,请尝试使用单顶。

于 2013-04-08T14:49:53.027 回答
0

试试下面的代码:

Intent resultIntent = new Intent(context, YourActivity.class);

resultIntent.setAction(Intent.ACTION_MAIN)       resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
                resultIntent, 0);


 .setContentIntent(pendingIntent)
于 2019-05-09T15:59:38.460 回答