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);
我正在尝试从通知中启动我的 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);