我有一个从堆栈中的活动创建的通知,恢复堆栈很重要。堆栈中的每个活动应该只存在一次。
所以我有这个:
A -> B, B starts notification
出于我的目的,我需要在堆栈上恢复A -> B
。我试着启动A,但似乎没有任何额外的意图来立即启动startActivity
。
恢复堆栈需要什么标志和XML属性的组合
如果用户在B
上并点击通知,则不应启动新堆栈。重新加载所有内容都很好,但不应该进行A -> B -> B
。
在您的通知意图中使用
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
将把一个现有的活动放在前面,否则它将创建它,使堆栈没有重复的活动