有以下代码:
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"
添加为活动的属性。
安卓开发者