我在活动中发生某些事件时向用户显示通知。当我创建通知时,如果我的活动被系统清除,我使用TaskStackBuilder来确保我有后台活动列表。我的代码看起来像这样:
...
TaskStackBuilder builder = TaskStackBuilder.create(sContext);
builder.addNextIntent(new Intent(context, ActivityA));
builder.addNextIntent(new Intent(context, ActivityB));
builder.addNextIntent(new Intent(context, ActivityC));
PendingIntent pendingIntent =
builder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT)
Notification.Builder builder = new Notification.Builder(context)
.setContentTitle(title))
.setContentText(notificationText)
.setSmallIcon(getNotificationIcon())
.setContentIntent(pendingIntent);
builder.build();
...
因此,打开的活动将是最后添加的活动和活动C(我不希望重新创建活动)。 我发现的一个解决方案是:How to make notification resume and not recreate activity? 据说我不应该使用TaskStackBuilder,但这不是我想要的。我想从通知开始一个活动,使用TaskStackBuilder而不是重新创建整个活动。
任何解决方案/建议?
答案 0 :(得分:1)
如果您只是想使用通知来允许用户以任何状态返回任务,那么您就不需要TaskStackBuilder了。
请参阅:
答案 1 :(得分:-2)
TaskStackBuilder builder = TaskStackBuilder.create(sContext);
Intent intentForA = new Intent(context, ActivityA);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
builder.addNextIntent(intentForA);
如果活动已经存在,那么该标志将不会重新创建活动,并且只会将新的Intent传递给onNewIntent()方法。有关详细信息,请查看文档
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP