Java 如何在创建同一活动的过程中取消当前活动?
有以下代码:Java 如何在创建同一活动的过程中取消当前活动?,java,android,Java,Android,有以下代码: Intent i = new Intent(this, MessagesActivity.class); PendingIntent pi = PendingIntent.getActivity(this, 100, i, PendingIntent.FLAG_CANCEL_CURRENT); NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFIC
Intent i = new Intent(this, MessagesActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 100, i, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder nb = new NotificationCompat.Builder(this);
nb.setContentText("There is a new message for you").setContentTitle("New message").setContentIntent(pi);
nb.setWhen(System.currentTimeMillis()).setDefaults(Notification.DEFAULT_ALL);
nb.setTicker("SomeText").setSmallIcon(android.R.drawable.ic_dialog_alert);
manager.notify(100, nb.getNotification());
当用户通过使用此代码创建的通知单击时,应用程序应打开MessagesActivity活动。它起作用了。但是,如果用户已经在MessagesActivity中,则此代码将执行MessagesActivity的新副本。我怎样才能修好它?提前谢谢 尝试使用:
为您的意图标记活动历史标记
Intent i = new Intent(this, MessagesActivity.class).setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
它不会在历史堆栈中生成活动。因此将不会有多个实例。您可以为清单文件中的活动尝试此操作吗 添加
launchMode=“singleTop”
作为活动的属性
抱歉,我需要关闭当前MessagesActivity并执行新副本。抱歉弄错了请尝试将其设置为“标准”,它应该是默认值。(系统总是在目标任务中创建活动的新实例,并将意图路由到目标任务。)您能否澄清,当用户通过通知或其他方式启动现有活动时,是否要关闭该活动?当用户已在运行该活动时,是否要关闭该活动。单击“按通知”时,我希望关闭当前活动(此活动是否为MessagesActivity)并创建MessagesActivity的新副本。如果当前活动是另一个活动,我希望在不关闭任何内容的情况下执行MessagesActivity的副本。FLAG_activity_REORDER_to_FRONT,FLAG_activity_SINGLE_TOP这是可用于意图的其他标志。您可以查看此意图