意图恢复以前暂停的活动(从通知中调用)

我正在开发一个应用程序,向用户显示通知。 通知的目标是让用户在用户处于另一个活动时很容易返回到活动。 我在我的应用程序中使用此代码来创build并显示通知。

notification = new Notification(R.drawable.icon, "Notify", System.currentTimeMillis()); notification.setLatestEventInfo(this, "App name", "App message", PendingIntent.getActivity( this, 0, new Intent(this, Main.class), PendingIntent.FLAG_CANCEL_CURRENT)); notification.flags |= Notification.FLAG_ONGOING_EVENT; nManager.notify(0, notification); 

但是,当用户点击通知时,会启动同一活动的新实例,而不是用户以前使用的实例。

我认为这与PendingIntent有关,但我无法find如何使Intent恢复先前暂停的活动实例,而不是创build新的实例。

谢谢。

Solutions Collecting From Web of "意图恢复以前暂停的活动(从通知中调用)"

我发现如何做到这一点。 我添加了下面的代码:

 notifyIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

现在我的代码如下所示:

  notification = new Notification(R.drawable.icon, "Notify", System.currentTimeMillis()); notification.setLatestEventInfo(this, "App name", "App message", PendingIntent.getActivity(this, 0, new Intent(this, Main.class) .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP), PendingIntent.FLAG_CANCEL_CURRENT)); notification.flags |= Notification.FLAG_ONGOING_EVENT; 

这对我有帮助android:launchMode =“singleInstance”

 <activity android:name="com.mosis.automatskidnevnik.MainActivity" android:launchMode="singleInstance" android:label="@string/app_name" > ... 

接受这个答案,如果它可以帮助你。

创build您的PendingIntent时,您使用:

Main.this.getBaseContext()

如果要返回到相同的活动,您应该使用默认的活动上下文。 在这里阅读更多:

Android – 获取上下文的各种方法有什么区别?

我通过设置解决了同样的问题

机器人:launchMode = “singleTask”

除了@Jimix的正确答案之外,我会将PendingIntent requestCode从0更改为非零值,并在另一个答案上进行评论。 另一方面,在以前的Android版本上有一个已知的bug ,让我花了几个绝望的时间。 在那里提出的解决scheme在我发送通知之前取消了PendingIntent

 if (Build.VERSION.SDK_INT == 19) { getNotificationPendingIntent().cancel(); }