0

有以下代码:

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

4

2 回答 2

1

您可以在清单文件中为您的活动尝试此操作吗?

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

安卓开发者

于 2013-07-23T13:21:47.650 回答
1

尝试使用:

您的意图的 FLAG_ACTIVITY_NO_HISTORY 标志。

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

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

于 2013-07-23T13:17:14.363 回答