从通知中恢复活动堆栈?

时间:2014-11-10 02:23:27

标签: android android-intent notifications android-pendingintent

我有一个通知,它是从堆栈中的活动创建的,并且堆栈的恢复非常重要。堆栈中的每个活动应该只有一次。

所以我有这个:

A -> B, B starts notification

出于我的意图,我需要在堆栈上恢复A -> B。我尝试启动A,但目的似乎没有任何额外的东西可以立即启动startActivity

恢复堆栈需要哪些标志和XML属性组合?

如果用户在B上并点按通知,则不应启动新堆栈。重新加载一切都很好,但它不应该A -> B -> B

1 个答案:

答案 0 :(得分:1)

在通知意图中使用

i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

由于您不能/不应该更改跨不同应用程序备份的后退按钮功能。在B活动中,使用“向上”按钮使用类似以下内容的方式导航堆栈:

Intent upIntent = new Intent(this,ParentActivity.class);
upIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(upIntent);
finish();

Intent.FLAG_ACTIVITY_REORDER_TO_FRONT会将现有活动带到前面,否则它会创建它,使堆栈不受重复活动的影响