Android启动相同的活动但关闭前一个活动

时间:2016-02-15 23:51:18

标签: android android-activity android-notifications

我正在尝试从通知中启动我的活动并且它正在运行但是当我从其中退出时,我的活动的另一个(副本)被启动而不是启动相同的活动,而是在其下面找到另一个活动副本。 / p>

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

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

您可以在finish();之前致电b.setContentIntent(pIntent);

答案 1 :(得分:0)

你必须使用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关于你已经打开的本课程的父级!这应该解决你的问题。我希望这是有帮助的。三江源

答案 2 :(得分:0)

您可以设置一个标志,每次启动相同的活动而不是新活动:

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

答案 3 :(得分:0)

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

android:launchMode = "singleInstance"

在启动活动之前标记意图

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);