我创建了一个带按钮的简单应用程序。单击它会触发通知,单击通知会启动同一应用程序的新实例。但是,我希望点击通知应该会将我带回到触发通知的应用程序实例。为此,我查阅了FLAG_ACTIVITY_NEW_TASK
标志的Android文档 -
使用此标志时,如果任务已在您正在启动的活动中运行,则不会启动新活动;相反,当前任务将简单地以其最后一个状态被带到屏幕的前面。请参阅FLAG_ACTIVITY_MULTIPLE_TASK以获取禁用此行为的标志。
基于此,在创建传递给PendingIntent的意图时,我设置了这个标志。但是,单击通知仍会启动应用程序的新实例。
我做错了什么?
答案 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)