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

我正在开发一个应用程序,向用户显示通知。 通知的目标是让用户在用户处于另一个活动时很容易返回到活动。 我在我的应用程序中使用此代码来创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新的实例。

谢谢。

  • 如何才能正确地将唯一的额外内容传递给待处理的意图?
  • 取消PendingIntent
  • Android:通知中的PendingIntent不会触发onCreate(),如果将活动带回到屏幕上
  • 如何通过PendingIntent将数据发送到广播?
  • 没有在extras中包含一个pendingIntent?
  • 停止Android报警pipe理器的setrepeat
  • Android通知操作未被触发(PendingIntent)
  • 如何获取和取消PendingIntent?
  • 我发现如何做到这一点。 我添加了下面的代码:

     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(); }