Android 开始相同的 activity 但关闭前一个

Android start the same activity but close previous one

我正在尝试从通知中启动我的 activity,它正在运行,但我没有启动相同的 activity,而是在我启动时启动了我的 activity 的另一个(副本)退出它我在它下面找到了另一个 activity 的副本。

NotificationCompat.Builder b = new NotificationCompat.Builder(this);
....
Intent intent = new Intent(this, MyActivity.class);
intent.putExtra("item", currentObj);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
....
b.setContentIntent(pIntent);

我该如何解决这个问题??

您可以在 b.setContentIntent(pIntent); 之前调用 finish();

您必须使用 TaskStackBuilder 并添加其父项

  TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);

// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(MainActivity.class);

stackBuilder.addNextIntent(resultIntent);

并且您已将其添加到通知中

stackBuilder.addParentStack(MainActivity.class);

它的作用很简单,它只是说 android 关于您打开的当前 class 的父项!这应该可以解决您的问题。我希望这是有帮助的。谢谢

您可以设置一个标志,每次都以相同的方式开始 activity 而不是一个新的:

Intent intent = new Intent(this, MyActivity.class);
intent.putExtra("item", currentObj);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);    

您可以将此行添加到 manifest 内的 Activity 以防止多次加载相同的 activity

android:launchMode = "singleInstance"

在开始之前标记意图 Activity 像这样

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);