在通知中使用 TaskStackBuilder 会重新创建 activity
Using TaskStackBuilder in notification recreates an activity
当 activity 中发生某些事件时,我会向用户显示一条通知。当我创建通知时,我使用 TaskStackBuilder 来确保如果我的活动被系统清除,我有 backstack activity 列表。我的代码看起来像这样:
...
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();
...
因此,打开的 activity 将是最后添加的,即 ActivityC(我不想重新创建它)。
我找到的一个解决方案是:How to make notification resume and not recreate activity?
据说我不应该使用 TaskStackBuilder,但这不是我想要的。我想从通知开始 activity,使用 TaskStackBuilder 而不是重新创建整个 activity。
任何solutions/suggestions?
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);
该标志不会重新创建 activity 如果它已经存在,并且只会将新 Intent 传递给 onNewIntent() method.For 更多详细信息请查看文档
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP
如果您只想使用通知来允许用户 return 处理处于任何状态的任务,那么您不需要 TaskStackBuilder。
参见:
Notification to restore a task rather than a specific activity?
Resume application and stack from notification
当 activity 中发生某些事件时,我会向用户显示一条通知。当我创建通知时,我使用 TaskStackBuilder 来确保如果我的活动被系统清除,我有 backstack activity 列表。我的代码看起来像这样:
...
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();
...
因此,打开的 activity 将是最后添加的,即 ActivityC(我不想重新创建它)。 我找到的一个解决方案是:How to make notification resume and not recreate activity? 据说我不应该使用 TaskStackBuilder,但这不是我想要的。我想从通知开始 activity,使用 TaskStackBuilder 而不是重新创建整个 activity。
任何solutions/suggestions?
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);
该标志不会重新创建 activity 如果它已经存在,并且只会将新 Intent 传递给 onNewIntent() method.For 更多详细信息请查看文档
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP
如果您只想使用通知来允许用户 return 处理处于任何状态的任务,那么您不需要 TaskStackBuilder。
参见:
Notification to restore a task rather than a specific activity?
Resume application and stack from notification