Android - 使用FLAG_ACTIVITY_NEW_TASK

时间:2013-04-08 14:46:52

标签: android android-intent flags

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

  

使用此标志时,如果任务已在您正在启动的活动中运行,则不会启动新活动;相反,当前任务将简单地以其最后一个状态被带到屏幕的前面。请参阅FLAG_ACTIVITY_MULTIPLE_TASK以获取禁用此行为的标志。

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

我做错了什么?

3 个答案:

答案 0 :(得分:5)

请记住,当您点击Notification来自Context的{​​{1}}意图正在启动时。 那个上下文没有活动对它的任务(事实上,它将是一个空白的任务)。

这会导致同一个Activity的两个版本(尽管只有一个Application实例)正在运行。每个Activity都运行不同的Task

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

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

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

您可能需要搜索并优化您的问题。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

尝试下面的代码,它将起作用。

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

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

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

.setContentIntent(pendingIntent)