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



有以下代码:

    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中,则此代码将执行MessagesActivation的新副本。我该怎么修?提前谢谢。

尝试使用:

FLAG_ACTIVITY_NO_HOSTORY标志。

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

它不会使历史中的活动堆栈。因此不会有超过一个实例。

你能在清单文件中为你的活动尝试一下吗?

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

安卓开发者

最新更新