我写了这样的通知意图(下面的代码段)。我有活动A,B和C运行。在运行C时,我按下主屏幕并很快收到通知。我按下了通知图标,希望从活动A重新启动应用程序但不幸的是它没有。当前代码的作用是在堆栈顶部创建一个新的Activity A.所以我坚持使用以下运行活动(或堆栈):A,B,C,A
所以我的主要问题是,如何清理活动堆栈,以便在单击通知图标时只有活动A在堆栈上?
任何提示或评论都会表示赞赏。
Intent notificationIntent = new Intent(context,
A.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
notificationIntent, 0);
notification.setLatestEventInfo(appContext, contentTitle,
contentText, contentIntent);
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(ns);
mNotificationManager.notify(1, notification);
答案 0 :(得分:0)
为清单中的活动A设置launchMode =“singleTask”。在这种情况下,活动A将是您从通知返回后运行的唯一活动。
但是,当启动模式为singleTask或singleInstance时,当您从后台恢复应用时,您的应用的行为方式会相同。它不可能恢复到活动B或C.
答案 1 :(得分:0)
This question可以通过FLAG_ACTIVITY_CLEAR_TOP或使用startActivityForResult
为您提供帮助。