2

当活动中发生某些事件时,我会向用户显示一条通知。当我创建通知时,如果我的活动被系统清除,我会使用 TaskStackBuilder 来确保我有 backstack 活动列表。我的代码看起来像这样:

    ...
    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();
    ...

因此,打开的活动将是最后添加的,即 ActivityC(我不希望重新创建它)。我找到的一个解决方案是:如何使通知恢复而不是重新创建活动? 据说我不应该使用 TaskStackBuilder,但这不是我想要的。我想从通知开始一个活动,使用 TaskStackBuilder 而不是重新创建整个活动。

任何解决方案/建议?

4

2 回答 2

2

如果您只想使用通知允许用户以任何状态返回任务,那么您不需要 TaskStackBuilder。

看:

于 2015-11-09T12:57:53.150 回答
-1
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

于 2015-11-05T12:38:37.680 回答