如何在创建同一个活动期间取消当前活动?

时间:2013-07-23 13:10:52

标签: 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.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的新副本。我该如何解决?提前致谢。

2 个答案:

答案 0 :(得分:1)

尝试使用:

FLAG_ACTIVITY_NO_HISTORY标志为您的意图。

Intent i = new Intent(this, MessagesActivity.class).setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

它不会在历史堆栈中进行活动。所以不会有多个实例。

答案 1 :(得分:1)

您可以在清单文件中尝试使用此活动吗?

添加launchMode="singleTop"作为您活动的属性。

Android Developers